摘要: 其实就是我们经常玩的贪吃蛇。不过现在我们优先蛇的头的话,要用一个巧妙的哈希来把蛇的身体表达出来,那么就可以用一个4进制的数字来表示,蛇的身体长度最多不超过8,所以最多是2^7种状态。 1 #include 2 #include 3 #include 4 #include 5 #include 6 int const N = 8; 7 int const M = 22; 8 int const State = 17000; 9 struct Snake 10 { 11 int bx[N],by[N]; 12 int step; 13 }cur,nt;... 阅读全文
posted @ 2013-07-23 01:00 诺小J 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 这题主要是注意好限定的条件条件1:每个公交车都至少要到达两次条件2:公交车相同时间和相同间隔是属于两种车辆条件3:不同的车可能到达时间相同上述都是深搜的重要条件: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using std::sort; 8 int const N = 1000; 9 struct node10 {11 int begin,interval,Count;12 bool operator tmp.Count;15 }16 }bus[N];17 ... 阅读全文
posted @ 2013-07-22 12:21 诺小J 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 起初的想法果然就是一个6000000的状态的表示。但是后面觉得还是太过于幼稚了。可以看看网上的解释,其实就是先转换位置,然后再改变数字的大小。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using std::swap; 8 using std::queue; 9 int const INF = 10000000; 10 int const N = 6; 11 struct node 12 { 13 int num[N]; 14 int pos,step,s... 阅读全文
posted @ 2013-07-19 15:16 诺小J 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 此题反正我自己是认为poj给的数据范围是有错的,不知道是不是自己太弱了,有大神在的话,欢迎来呸!其实目的就在于建图,搞的我后来建了一个无比纠结的图,先建立了火柴棍和正方形的一个全图,然后再删除一些火柴和正方形其实舞蹈链就是一个剪枝的深搜,好好理解就是的。数据n应该大于5的。 1 #include 2 #include 3 #include 4 #include 5 int const N = 200; 6 int n; 7 int des,dnum; 8 int mark[N][N],map[N][N]; 9 int rvis[N],cvis[N]; 10 11 int L... 阅读全文
posted @ 2013-07-16 23:25 诺小J 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 看了逆波兰表达式之后,发现真是强悍的数据结构,栈的应用怎么感觉一辈子也学不完了呢后缀表达式即逆波兰表达式,就是将所有的运算符按照一定的等级全部都安排到数字的后面去,实现正确的运算法则。OK,代码要自己好好看,理解了自然就很简单。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int const N = 200; 8 int hash[N]; 9 char exp1[N],exp2[N],a1[N],a2[N],stack1[N]; 10 int stack2[N]... 阅读全文
posted @ 2013-07-14 00:55 诺小J 阅读(230) 评论(0) 推荐(0) 编辑
摘要: zoj 与其说是搜索,不如说是枚举,只不过是通过搜索来实现的罢了。主要是要注意好闰年的判断,特别是要注意好一串数字的划分。题意其实我也看了一个晚上,才渐渐的看懂。题意:给你一个字符串,其中包含数字信息,年月日,如果还有数字意外的字符,那么就一定有两个字符,将年月日三中信息隔开如果里面没有其他字符,那么就只有数字,其中分配给月,日每个需要两个数字字符,而分配给年则需要2,4个字符来表示将限制条件写好,自然也就ac了。过程可能不好受,但是都是这么过来的。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include ... 阅读全文
posted @ 2013-07-14 00:50 诺小J 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 又要开始一段搜索的路程了。最近看了这题,在网上看到一个结论,任何一个数倍数都能被不超过两个数字组成,假如一个数n个A%x=b,那么必然有m个A%=b那么此时n个A减去m个B就能够被x整除,那么此时就有了上述的结论,在配合上余数来进行一个搜索,就是把余下的数字作为一个状态来进行广搜。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using std::queue; 7 int const N = 15; 8 int const M = 61000; 9 int cnt[M],father[M],record[M... 阅读全文
posted @ 2013-07-08 23:50 诺小J 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 每个格子有3种状态,放置这1*2的长方体的3中方法,然后广搜就OK了,因为每移动一格都是一步,所以广搜就是最短路了。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cstdlib> 5 #include<cmath> 6 #include<algorithm> 7 #include<queue> 8 using std::queue; 9 struct node 10 { 11 int x1,x2,y1,y2,s; 阅读全文
posted @ 2013-05-28 16:19 诺小J 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱。当i < M时,要求Ri > Ri+1且Hi > Hi+1。由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。令Q = Sπ请编程对给出的N和M,找出蛋糕的制作方案(适当的Ri和Hi的值),使S最小。 (除Q外,以上所有数据皆为正整数)有两行,第一行为N(N <= 10000),表示待制作的蛋糕的体积为Nπ;第二行为M(M < 阅读全文
posted @ 2013-05-23 17:33 诺小J 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 101为镜子数,100不是,并且121也不是,因为2反过来会变成s形,所以这题的思路只用考虑0,1,8也就是一个三进制的数就可以了。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<cstdlib> 6 #include<algorithm> 7 using std::cout; 8 using std::endl; 9 using std::cin;10 typedef long long L 阅读全文
posted @ 2013-05-23 09:57 诺小J 阅读(234) 评论(0) 推荐(0) 编辑