03 2014 档案
Codeforces Round #239 (Div. 2) C. Triangle
摘要:time limit per test:1 secondmemory limit per test:256 megabytesinput:standard inputoutput:standard outputThere is a right triangle with legs of lengthaandb. Your task is to determine whether it is possible to locate the triangle on the plane in such a way that none of its sides is parallel to the co
阅读全文
ZOJ 2750 Idiomatic Phrases Game(Dijkstra)
摘要:点我看题目题意 : 给定一本字典,字典里有很多成语,要求从字典里的第一个成语开始,运用字典里的成语变到最后一个成语,变得过程就是成语接龙,后一个成语的第一个字必须有前一个成语的最后一个字相等,给定的成语是4位16进制位,每个成语前边跟的数字代表着找到这个成语之后再找到下个成语还需要t分钟。思路 :将所有的成语看成一个点,如果找到下一个成语,就建一条有向边,然后用dijkstra求最短路。#include #include #include using namespace std;struct node{ char f[5],b[5] ; int timee ;} dicti[101...
阅读全文
HDU 2986 Ballot evaluation(精度问题)
摘要:点我看题目题意 : 给你n个人名,每个名后边跟着一个数,然后m个式子,判断是否正确。思路 :算是一个模拟吧,但是要注意浮点数容易丢失精度,所以要好好处理精度,不知道多少人死在精度上,不过我实在是不怎么会处理精度,所以我就让那个数变为字符串输入然后在处理,相当于乘上10,但是直接乘上10,数容易变,不知道的自己可以试一下。#include #include #include #include #include #include using namespace std;string name[51] ;string score ;char ch[51] ;int yun ;int main(){
阅读全文
HDU 2985 Another lottery(坑题)
摘要:点我看题目题意 : 有n个人,每个人可以玩m轮,每一轮中每个参与者都有cj张票,第 i 轮的奖金是2的i次方,问你每个人所能赢得最多的奖金的概率是多少。思路 : 这个题比较坑啊,其实不用去算前几轮的,因为题目中要能越多的奖金越好,所以肯定是最后一轮啊,所以把每个人手中最后一轮的票想加,然后占的那个比例就是要输出的。#include #include #include using namespace std ;int a[10100] ;int gcd(int c,int b){ return (b>0)?gcd(b,c%b):c;} ;int main(){ int m,n ; ...
阅读全文
HDU 2370 Convert Kilometers to Miles
摘要:点我看题目题意 : 按照题目给定的规则将公里转化成英里,就是每个数都可以用斐波那契数列里的数表示,每个数都有一个编码,21可以表示成(1,0,0,0,0,0,0) ,13可以表示成(1,0,0,0,0,0),42可以表示成(1,0,0,1,0,0,0,0),将这个数的编码的最后一位去掉,所以42就变成(1,0,0,1,0,0,0),然后倒过来(0,0,0,1,0,0,1),第四个和第7个是1,然后斐波那契中第四个和第七个数加起来就是26.思路 : 这个题我一开始卡了很久,因为我实在不明白题目表达了什么意思,也不知道42为什么就可以表示成那样的,后来就算了一下,42等于34+8,正好是斐波那契中
阅读全文
HDU 2369 Broken Keyboard(字符串)
摘要:点我看题目题意 : 这个人的键盘坏了,最多只能按n个键,给你一串字符串,问你找一个最长的字串,这个字串中包含的不同的字母不能超过n个。思路 : 比赛的时候脑子没转过来,一直没模拟出来,都不知道怎么弄出来。。。。。就是我用的是队列,往队列里放就行,不过其实不用那么麻烦,直接往那个数组里放,然后指针移动的时候要注意别出错,基本上问题不大,我还因为数组开小了WA了一次。#include #include #include #include using namespace std;char ch[1000010] ;int chh[501] ;int main(){ int n ; whi...
阅读全文
ZOJ 2110 Tempter of the Bone(DFS)
摘要:点我看题目题意 : 一个N×M的迷宫,D是门的位置,门会在第T秒开启,而开启时间小于1秒,问能否在T秒的时候到达门的位置,如果能输出YES,否则NO。思路 :DFS一下就可以,不过要注意下一终止条件再判断一下时间,还有因为题目中要求走过的路要变成墙,所以每次走的时候要注意一下把路变成墙,但是如果你不走这条路了,要记得变回来。还有这个题必须剪枝,否则超时超到疯啊,DFS函数中那个剪枝不怎么好想,T-t代表的是在当前位置还需要T-t步路。而fabs(ex-x)+fabs(ey-y)指的是当前位置离终点最短还有着些步数,如果两者之差不小于0的话,T-t应该等于fabs(ex-x)+fabs
阅读全文
POJ 1151 Atlantis(离散化)
摘要:点我看题目题意 : 就是给你n个矩形的最左下角和最右上角的点的坐标,然后将这n个矩形的面积求出来。思路 : 离散化求矩形面积并。离散化具体介绍。将横纵坐标离散开来分别存,然后排序,也可以按照黑书上411页写的两个算法中,有一个说是用二分,效率比较好,不过我用的不是二分,而是普通的循环查找。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 double x[201],y[201],s[101][4]; 7 int flag[201][201]; 8 int t,cas = 1 ; 9 double s...
阅读全文
HDU 1253 胜利大逃亡(三维BFS)
摘要:点我看题目题意 : 中文题不详述。思路 :因为还牵扯到层的问题,所以用三维的解决,不过这个还是很简单的BFS,六个方向搜一下就可以了,一开始交的时候老是超时,怎么改都不对,后来看了一个人写的博客,他说用C++交300ms,G++交600ms,我就改成C++交了,果然AC了,不过。。。。用了900ms。。。。。我也懒得改了,也不知道为什么G++交超时#include #include #include #include #include #include #include using namespace std ;int mapp[51][51][51] ;bool vis[51][51][51
阅读全文
URAL 1119. Metro(BFS)
摘要:点我看题目题意 : 这个人在左下角,地铁在右上角,由很多格子组成的地图,每一条边都是一条路,每一条边都是100米。还有的可以走对角线,问你从起点到终点最短是多少。思路 : 其实我想说一下,,,,,这个题基本都是用DP做的,这是为什么呢?好吧,这要从我最近要刷BFS题开始,于是二货自己很厉害的用BFS做完了,所以就给我推荐了,我其实没看出来能用BFS来做。。。。。。。//URAL 1119#include #include #include #include #include using namespace std;int n,m ;bool ch[1100][1100] ;bool vis[1
阅读全文
SDUT 2622 最短路径(Dijkstra)
摘要:点我看题目题意 :中文不详述。思路 :因为这个题加了一个要求就是路径数目得是x的倍数。所以在原来算法的一维dis数组增加到二维,用来存走的路径数%x。也可以用spfa做。#include #include #include #include using namespace std ;#define LL long longconst int maxn = 110 ;const int maxm = 10010 ;bool vis[maxn][maxn] ;const LL INF = 1LL dist[i][j]) { min...
阅读全文
POJ 1135 Domino Effect(Dijkstra)
摘要:点我看题目题意 : 一个新的多米诺骨牌游戏,就是这个多米诺骨中有许多关键牌,他们之间由一行普通的骨牌相连接,当一张关键牌倒下的时候,连接这个关键牌的每一行都会倒下,当倒下的行到达没有倒下的关键牌时,这个关键牌也会倒下,然后与这个关键牌相连接的所有行都会倒下,每一行有两个端点也就是两个关键牌,可以从任意一个端点开始倒下,也可以从两个端点同时开始倒下,从第一张骨牌开始倒,最后倒下的牌的位置以及时间。思路 : 先利用Dijkstra求出每张关键牌倒下的时间time[i],即求出第一张关键牌到其他关键牌的最短路径,然后求出众最短路径中最大的那个,即为time1。再计算每一行倒下的时间,每一行的两个关键
阅读全文
SDUT 1570 C 旅行(DFS)
摘要:点我看题目题意 : 中文不详述。思路 :就是DFS一下,只要到达终点条数就加1,然后再注意一下方向,因为我就是没注意方向WA了,只能向上向右走,x是行,所以向上是x-1,向右是y+1,因为我没弄好,结果就废了。。。。。。#include #include #include #include using namespace std;int m,n,sx,sy,ex,ey ;int mapp[30][30] ;int vis[30][30] ;int dire[2][2] = {{0,1},{-1,0}} ;int cnt ;void DFS(int x,int y){ if(x == ex...
阅读全文
SDUT 1269 走迷宫(BFS)
摘要:点我看题目题意:中文不详述。思路 :上上上场比赛让一个BFS给虐了,上次比赛让一个三维的给废掉了。。。。。。。所以急于从水题刷起。。。。。。还因为数组开小了WA了5,6次#include #include #include #include using namespace std;int m,n,sx,sy,ex,ey ;int mapp[17][17] ;int vis[17][17] ;int mpx[400],mpy[400] ;int dire[4][2] = {{0,-1},{-1,0},{0,1},{1,0}} ;int flag ;int step ;void DFS(int x
阅读全文
求连通分量个数
摘要:#include #include #include int mapp[210][210] ;bool vis[210] ;using namespace std;int N,M ;void DFS(int u){ vis[u] = true ; for(int i = 1 ; i <= N ; i++) if(!vis[i] && mapp[u][i]) DFS(i) ;}int main(){ int T ; scanf("%d",&T) ; while(T--) { scanf("%d %d",&N,&
阅读全文
Codeforces Round #237 (Div. 2)
摘要:链接A. Valera and Xtime limit per test:1 secondmemory limit per test:256 megabytesinput:standard inputoutput:standard outputValera is a little boy. Yesterday he got a huge Math hometask at school, so Valera didn't have enough time to properly learn the English alphabet for his English lesson. Unfo
阅读全文
FZU 2150 Fire Game(BFS)
摘要:点我看题目题意 :就是有两个熊孩子要把一个正方形上的草都给烧掉,他俩同时放火烧,烧第一块的时候是不花时间的,每一块着火的都可以在下一秒烧向上下左右四块#代表草地,.代表着不能烧的。问你最少花多少时间可以烧掉,如果烧不掉就输出-1思路 :这个题因为可以同时向上下左右同时烧过去,所以一看我就知道是BFS,但是知道没用啊,我做不出来啊,我一开始没想过来,以为两个人烧很麻烦,其实就是向普通的那样做,不过来个6重for循环就行了,其实就是看看有几个块,如果块的个数超过两个就为-1,两个的话,分别开始烧,哪个块里有最长路,就是烧的那个时间,不过你要枚举有最长路的那个的块的每一个可烧的点,从而找出时间最短的
阅读全文
HDU 2045 不容易系列之(3)—— LELE的RPG难题(递推)
摘要:点我看题目题意 : 中文题不解释。思路 :先算了第3个第4个,算的时候发现只要在已经枚举出来的前边的状态中往后添加字母就行了,如果两个的都已经表示出来了,那第三个就可以在每个第二个后边加一个,在第一个后边加两个。#include #define LL __int64LL a[51] ;void chart(){ a[1] = 3 ; a[2] = 6 ; a[3] = 6 ; for(int i = 4 ; i < 51 ; i++) a[i] = a[i-1]+a[i-2]*2 ;}int main(){ int n ; chart() ; w...
阅读全文
HDU 2844 Coins(多重背包)
摘要:点我看题目题意 :Whuacmers有n种硬币,分别是面值为A1,A2,.....,An,每一种面值的硬币的数量分别是C1,C2,......,Cn,Whuacmers想买钱包,但是想给人家刚好的钱,不喜欢再找钱那么麻烦,但是他不知道钱包的具体钱数,只知道不会超过m,所以问你手里的钱能表示多少个不超过m的钱数。思路 :多重背包。不知道的去搜背包九讲,几乎都一样。我想说这个小哥儿真逗#include #include #include #include using namespace std ;int a[110],c[110] ;int dp[100010] ;bool vis[100010]
阅读全文
HDU 4540 威威猫系列故事——打地鼠(DP)
摘要:点我看题目题意 :中文题,不详述。思路 : 状态转移方程 dp[ i ][ j ] = dp[i-1][k] + fabs(a[ i ][ j ]-a[i-1][k]) ;dp[i][j]代表的是在 i 时刻如果敲第j坐标上的地鼠需要的最小消耗。#include #include #include #include using namespace std ;int a[30][30] ;int dp[1000][510] ;const int INF = 99999999 ;int main(){ int N,K ; while(~scanf("%d %d",&N,
阅读全文
Codeforces Round #236 (Div. 2)
摘要:A. Nutstime limit per test:1 secondmemory limit per test:256 megabytesinput:standard inputoutput:standard outputYou haveanuts and lots of boxes. The boxes have a wonderful feature: if you putx(x ≥ 0)divisors (the spacial bars that can divide a box) to it, you get a box, divided intox + 1sections.You
阅读全文
FZU 2140 Forever 0.5
摘要:Problem 2140 Forever 0.5Accept: 36Submit: 113Special JudgeTime Limit: 1000 mSecMemory Limit : 32768 KBProblem DescriptionGiven an integer N, your task is to judge whether there exist N points in the plane such that satisfy the following conditions:1. The distance between any two points is no greater
阅读全文
HDU 1171 Big Event in HDU(DP)
摘要:点我看题目题意 : 给你一个n,然后n组数据,每组两个数字,一个是物品的价值,另外一个是物品的数量,让你尽量将这些东西分成价值相等的两份,如果无法相等就前一份要大于后一份。思路 :这个题可以转化成01背包的放与不放的问题,就是该题中最后一句要注意到是一个负数终结输出而非-1 ,就因为我没发现WA了8次。。。。真是郁闷了。#include #include #include #include #include using namespace std ;struct node{ int value ; int num ;}map[55] ;int dp[251000] ;int mai...
阅读全文
HDU 1160 FatMouse's Speed(DP)
摘要:点我看题目题意 :给你好多只老鼠的体重和速度,第 i 行代表着第 i 个位置上的老鼠,让你找出体重越大速度越慢的老鼠,先输出个数,再输出位置。思路 :看题的时候竟然脑子抽风了,看了好久愣是没明白题目是什么意思。其实就是先按照体重排序,然后在速度里边找最长下降子序列,记录一下他们原来的位置,输出就行。数组开小了还WA了一次#include #include #include #include #include #include using namespace std ;struct node{ int weight ; int speed ; int position ;}ma...
阅读全文
ZOJ 3490 String Successor
摘要:点我看题目题意 : 给你一个字符串,让你按照给定规则进行处理。如果字符串里有字母或者是数字就忽略非字符数字,如果没有,就让最右边的那个字符+1.增量都是从最右边的字母或者数字开始的。增加一个数字的方法是加1到另一个数字('0' -> '1', '1' -> '2' ... '9' -> '0')。增加一个大写字母的方法是加一位到另一个字母('A' -> 'B', 'B' -> 'C' ... 'Z&
阅读全文
ZOJ 3609 Modular Inverse
摘要:点我看题目题意 : 这个题是求逆元的,怎么说呢,题目看着很别扭。。。。就是给你a和m,让你求一个最小的x满足a-1≡x(modm).或者ax≡1 (modm).通俗点说呢,就是找一个最小的x,他满足的条件的是a*x取余m等于1.思路 :这个题反正数据不是很大,枚举就行了,因为维基百科中说的,两个数必须是互质的,所以判断一下,还有这个题特别逗的是m是1的时候x肯定也是1,我觉得任何一个数取余1都应该是0,可是这里显然不是这样的。这个题还可以用扩展的欧几里德算法,也可以做。#include #include #include #include using namespace std ;int gc
阅读全文
ZOJ 3603 Draw Something Cheat
摘要:点我看题目题意 : 给你n个字符串,让你找出在每个字符串中出现的字母,按字典序输出来。思路 :一开始想差了,以为记录下每个字符出现次数,然后找次数大于1的,可是我忘了可能在一个字符串中有AA,而另一个字符串中一个A都没有的情况。稍微改一下就是出现过的标记一下次数,然后存到另一个数组里,反正就才26个字母,因为有可能出现我说的A的那种情况,但最后就只能输出一个A,所以每次都比较一下,找出字符串里出现次数最少的。#include #include #include #include #include #include #define INF 99999999using namespace std;
阅读全文
ZOJ 3705 Applications
摘要:点我看题目题意 : 真是一道又臭又长的模拟题啊,不过比赛的时候没看,赛完了补的。给你N个候选人,让你从中选M个候选人,根据四个大规则来确定每个人的分数,然后选分数前M个人的输出。1、在MOJ上做过题的根据以下规则来计算加分:如果题目是MAOMAO中的,做对一道加2.5分如果题目是Old Surgeon Contest中的做对一个加1.5分,当然在MAOMAO中没有与Old Surgeon Contest中相同的题如果不是两个中的题,但是题号是素数的做对一道加1分如果不是上边三种情况中的任何一种,做对一道加0.3分。2、Marjar学校每年都会举办比赛,如果申请人中有得了奖的,一等奖加36分,二
阅读全文
ZOJ 3170 Friends
摘要:点我看题目题意 : 就是有n个人,m对关系,每对关系的两个人是好朋友,这个关系是相互的,如果有两个人的共同好朋友超过k个,那这两个人也会是好朋友的,给你m对关系,给你足够长的时间,问你还能增加几对关系。思路 : 暴力,一开始忘了增加了新关系之后要回到第0个点开始找,因为时间足够长。#include #include #include #include #include using namespace std;const int maxn = 110 ;int a[maxn],map[maxn][maxn] ;int main(){ int T,n,m,k ; scanf("%d&qu
阅读全文
ZOJ 3713 In 7-bit
摘要:点我看题目题意 : 这个题的英文叙述真的是太强了,真不知道哪里来的英文,完全看不懂,看了两个小时没弄懂真正的题意。就是给你一个字符串,先输出长度,但是长度要用二进制表示出来,二进制的低7位左边如果没有1了,就直接将这7位二进制转化成16进制输出,如果左边还有1,就把这个低7位变成8位,最高的那位是1,然后把这个8位二进制转化成16进制输出,然后长度右移7位,重复这个操作。如果长度是1 001 000 001(2) = 577(10) = 241(16),先输出低7位1000 001 的16进制表示形式,但是因为这个低7位左边还有1,所以就输出11 000 001的16进制表示形式c1,然后还剩
阅读全文
HDU 1421 搬寝室
摘要:点我看题目题意 :中文题。思路 :DP题,因为一开始没想到该怎么找两个两个的,所以一开始没有思路,后来别人给讲了才知道。#include #include #include #include using namespace std ;int dp[2010][1010] ;int a[2014] ;int main(){ int n, k ; while(~scanf("%d %d",&n,&k)) { for(int i = 1 ; i = j * 2) dp[i][j] = min(dp[i-1][j],dp[i-2][j-1]...
阅读全文
浙公网安备 33010602011771号