摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1547题意:泡泡龙。有H行W列,其中奇数行可放W个泡泡,偶数行可放W-1个泡泡,'a'~'z'代表泡泡颜色,'E'代表该位置为空。一个泡泡可与6个位置相连,左上、右上,正左,正右,左下,右下。最后投放的泡泡若与相连泡泡形成3个上的颜色相同的块,则会爆炸。爆炸可能会牵连附近颜色不同的块,若这些块不能与第一行的泡泡相连。思路:需要两次dfs,第一次先标记出颜色相同,要爆炸的泡泡位置(标记为1)。第二次标记第一行及与第一行相连的未被标记的泡泡位置(标记为2)。若 阅读全文
posted @ 2013-12-15 11:46 byluoluo 阅读(303) 评论(0) 推荐(0)
摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1242题意:一个监狱里有路'.',墙'#',守卫'x',要解救的人'a',a的朋友'r',其中'a'仅有一个,其他可有多个。走一步需要1单位时间,杀守卫需要1单位时间(期间不走动),求能救出'a'的最短时间。思路:深搜。因为r有多个,所以从a出发找r,找出用时最短的。vis[i][j]标注到达该点的时间(若该点为x,还包括杀死守卫的时间)。某点可由四个方向到达,所以时间不一定相等,保持最小的那 阅读全文
posted @ 2013-12-14 11:14 byluoluo 阅读(194) 评论(0) 推荐(0)
摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175题意:判断两个位置的图案能否消除(存在不超过两次拐弯的连线)。解题过程:1、一开始开vis[][]记录已走过的位置,每个位置只能走一次。这样明显不行,因为一些拐弯超过两次的路线会与正确的路线重合,那么正确的路线就行不通了。2、跳出条件设置的地方错了,导致暴栈。1#include2#include3#defineN100545inta[N][N],n,m,flag,x1,x2,y1,y2,ans;6intdir[4][2]={1,0,-1,0,0,1,0,-1};78voiddfs(intx0,i. 阅读全文
posted @ 2013-12-14 00:13 byluoluo 阅读(258) 评论(0) 推荐(0)
摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2298题意:斜抛运动。。。起点坐标(0,0),终点坐标(x,y),速度v,g=9.8,求最小弧度角。(不存在输出-1)思路:总方程 g*x^2(tanθ)^2- 2*x*v^2*tanθ+ 2*y*v^2 + g*x^2 = 0;求tanθ。 ans = atan(tanθ);1#include2#include34#defineg9.85#definePI(double)acos(-1.0)67intmain()8{9intt;10doublex,y,v,ans;11scanf("%d&qu 阅读全文
posted @ 2013-12-13 11:08 byluoluo 阅读(195) 评论(0) 推荐(0)
摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2289细节问题:1、r为下底,R为上底,rh直接输出h4、圆台体积公式:PI*h*(r*r+r*R+R*R) / 3;1#include2#include3#definePI(double)acos(-1.0)45intmain()6{7intt;8doubler1,r2,h,v,x,r3,vv,left,right,y;9scanf("%d",&t);10while(t--)11{12scanf("%lf%lf%lf%lf",&r1,&r 阅读全文
posted @ 2013-12-12 20:18 byluoluo 阅读(171) 评论(0) 推荐(0)
摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2141题意:给出三个数列a,b,c和一组数x,求对于每个x是否存在ai + bj + ck = x;其中三个数列最多各有500个数,x最多有1000个。思路: 将数列a,b两两相加,组成一个数列(500*500)。然后枚举数列c,利用二分从合并数列中查找满足条件的数。注意事项:二分循环的条件为while(left2#include3#include4usingnamespacestd;5#defineN5056#defineS100578inta[N],b[N],c[N],d[N*N];910intma 阅读全文
posted @ 2013-12-12 11:38 byluoluo 阅读(208) 评论(0) 推荐(0)
摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1969题意:有n块高为1的圆柱形蛋糕,f+1个人,每块给出半径ri。现给每个人分一块蛋糕(可由分割得),要求面积相等。求每个人分得的最大体积。思路:进一步了解题意,就是每个人都必须有且仅有一块蛋糕,且每个人得到蛋糕的体积相等。令ave = 蛋糕总体积 / (f+1),理想状态下,体积为ave,即最大为ave。所以从0~ave进行二分,查找出最佳的答案。PS: 1、#define PI (double)acos(-1.0) (卡精度,nWA) 2、int num = 0; for(int i=1... 阅读全文
posted @ 2013-12-12 10:28 byluoluo 阅读(206) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3496题意:有n部电影,给出他们的用时和价值,现在一定要看m部(不能多不能少),花的时间要少于等于l,问最大价值题解:二维01背包问题,由于一定要看m部,要注意初值问题我的写法:1#include2#include3#defineN1054#defineL100556intdp[N][N][L],time[N],value[N];7intmain()8{9intn,m,l,t;10scanf("%d",&t);11while(t--)12{13scanf("%d 阅读全文
posted @ 2013-12-11 16:07 byluoluo 阅读(228) 评论(0) 推荐(0)
摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1712题意:acboy有n个课程,m天,在i课程花费j天的收益为a[i][j]。求最大收益。思路:显然第i种课程收益a[i][1]~a[i][m]最多只能选一种。b[i]表示i天前j-1种课程可获最大收益,dp[i]表示i天前j种课程可获最大收益。则枚举每个a[i][k],dp[j+k] = max(dp[j+k], b[j]+a[i][k]) (02#include3#defineN10545intvalue[N][N],dp[N],b[N];6intmain()7{8intn,m;9while(s. 阅读全文
posted @ 2013-12-10 21:58 byluoluo 阅读(159) 评论(0) 推荐(0)
摘要: 链接:http://codeforces.com/contest/370/problem/D题意:给出n*m的区域,当中填满'w'或'.',在n*m的区域范围内,添加‘+’,使‘w’和‘+’共同组成正方形边框,注意边框宽度为1,除边框外其他位置都只能为'.',若存在这样的情况,输出令边框最小的一个方案;若不存在,输出'-1'。思路:找出存在w的top,bottom,left,right值,构成矩形。令temph为矩形的长,tempv为矩形的宽;(1)若temph == tempv,则判断框以内是否含‘w’,含‘w’的话输出-1,不 阅读全文
posted @ 2013-12-08 23:40 byluoluo 阅读(284) 评论(0) 推荐(0)