摘要: 很BT的搜索。。。刚开始看题目的时候,也理解了题意,不过没想到要用什么算法。。也有想到每一种状态都存起来,不过没想到该怎么样处理细节。。最后不得己在网上搜了下代码,。。这题很BT的,,只是搜索就够麻烦了, 最后还要保存路径。。搞的头大。。不过最后无论如何还是把它给A了。。。^_^ .poj上的这道题目貌似不是special judje,,在poj上没能过去。。题目大意:黑先生新买了一栋别墅,可是里面的电灯线路的连接是很混乱的,有一天晚上他回家时发现所有的灯(除了他出发的房间)都是关闭的,而他想回卧室去休息。可是很不幸,他十分怕黑,因此他不会走入任何关着灯的房间,于是请你帮他找出一条路使他既能回 阅读全文
posted @ 2011-04-15 18:13 奋斗青春 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 广搜题,把每移动一步所得的状态都存下来,如果3个玩家所在的位置相同就返回。。# include<stdio.h># include<string.h># include<queue>using namespace std;char ch[10];int n,map[55][55],p[5],visit[55][55][55];struct node{ int val,ans1,ans2,ans3;};int dfs(){ int i,ans; queue<node>q; node cur,next; cur.ans1=p[1]; cur.ans2 阅读全文
posted @ 2011-04-14 11:26 奋斗青春 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 哇。。终于给写出来了。。题意很简单:把n个人分成2各组,每一个人有他所认识的人。所分的组有四点要求:1、每个人都必需属于一个组。2、每个组至少有一个人。3、每个组里面的每个人必需互相认识。4、两个组的成员应尽量接近。刚开始的时候以为只有一个连通分量呢,没想那么多,一直wa,后来发现每个人都用dp,感觉很纳闷,最后想想才发现,有可能有很多个连通分量。。。感觉用并查集处理起来会比较麻烦,就改用广搜了,然后记录每一个点层次如果是第k个连通分量的,奇数层次上的点存在s1[k][]里面,s1[k][0]记录点的个数,偶数层次上的放在s2[k][]里面,s2[k][0]记录点的个数。。判断一下s1[k]里 阅读全文
posted @ 2011-04-14 10:18 奋斗青春 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 斐波那契数列很容易理解,不过由它演变的题目很多。。。一般出的题目给的数据都很大,就是让你找规律。。。前两天校赛的时候出了一道题目。。 不死兔子。。参见zzuli-oj 1478题就是让求F(n)%m,然后n会很大,能达到10^8;这样的题目很明显的就是找循环节。。不过当时不知道是和前面的两三项进行比较, 以为还会和中间的相等(就是从中间开始循环), 写了一个双层for循环,直到最后,程序也没能运行出来。。后来听同学说只需要和前面2,3项进行判断就行, 至于为什么呢,我也无从得知。。。最后写了一层for循环,很容易的就找到了循环节,AC了。。。。还有一种类型的题目。。。Fibonacci。。。 阅读全文
posted @ 2011-04-13 13:22 奋斗青春 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 假设A中去掉的数在第k+1位,可以把A分成三部分,低位,k,和高位。A == a + b * 10^k + c * 10^(k+1)B == a + c * 10^kN == A + B == 2 * a + b * 10^k + c * 10^k * 11其中b是一位数,b * 10^k不会进位,用10^k除N取整就可以得到b + 11c,再用11除,商和余数就分别是c和b了。但是这里有个问题a是一个小于10^k的数没错,但是2a有可能产生进位,这样就污染了刚才求出来的b + 11c。但是没有关系,因为进位最多为1,也就是b可能实际上是b+1,b本来最大是9,那现在即使是10,也不会影响到除 阅读全文
posted @ 2011-04-12 20:11 奋斗青春 阅读(1715) 评论(1) 推荐(1) 编辑
摘要: 这两天看了下堆排序, 意思是理解了,不过还没找到用处。。。先练练打字吧。。堆排序(Heap Sort)只需要一个记录大小的辅助空间,每个待排序的记录仅占有一个存储空间。堆的定义如下:n个元素的序列{k1,k2,k3.....kn}当且仅当满足以下关系时,称之为堆。Ki <= K(2*i) && Ki <= K(2*i+1) 或者 Ki >= K(2*i) && Ki >= K(2*i+1)(i=1,2,...n/2)若将此序列对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树,则堆的含义表明,完全二叉树中所有非终端结点的 阅读全文
posted @ 2011-04-12 20:08 奋斗青春 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 以前做过这道题目,不过当时是找的牛人推出来的公式,,昨天又重新做了下,自己也推出来一个公式 ^_^。。高数没能学好,一开始只是以为定积分一下就ok了呢。。没想到定积分是求两点和曲线和x轴所围成的面积,最后再减去一个梯形的面积就行了。。先根据所给的点求出a,b,c;代码:# include<stdio.h># include<math.h>int main(){ int t; double x1,y1,x0,y0,x2,y2,a,b,c,ans; scanf("%d",&t); while(t--) { scanf("%lf%lf%l 阅读全文
posted @ 2011-04-12 10:57 奋斗青春 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 这道题目搞的我晕死。。。昨天晚上就写好了代码,是推出来的,交了几次都是wa,最后也没发现有错误,今天上午又查了一下资料, 又写了一个代码,还是wa。。。最后很无奈的去和别人的代码对比,改了又改,马上改的就一摸一样的还是WA。。。。最后就把输入改成scanf(“%s”)了,(我原来用的gets()),神奇的AC了。。感觉很奇怪,对这道题而言,用scanf和gets都是一样的,为何gets就一直wa呢。。求解。。。这个是昨天晚上写的,,思路就是根据余数然后列出来很多个方程,最后化简就ok啦。。注释掉的部分就是错的地方。。。哪位大虾给解释下为什么呢?????# include<stdio.h& 阅读全文
posted @ 2011-04-12 10:44 奋斗青春 阅读(1777) 评论(0) 推荐(1) 编辑
摘要: 哇哇哇哇。。又A了一道。。刚写出来的,感觉好激动。。下午的时候看了下题目,题目大意为两行数字,上下相同的数字连线算一次匹配,求可能的最大匹配,规则是:I 连线必须且只能被另一条直线穿过。且这两条直线代表的数字不能相同。II 一个数字只能有一条连线。刚开始没什么想法,也有想到dp,不过没想到具体怎么实现。。晚上又仔细看了下,感觉dp应该可以做出来,用了好多for循环,不过如果按我的思路来理解会很简单的。。dp[i][j]表示第一行数字从第i个到n,第二行数字从第j个到m,这么些数字有多少个匹配。对于dp[i][j-1],只需要讨论b[j-1]与第一行的a[i]...a[n]的匹配情况。。看代码: 阅读全文
posted @ 2011-04-07 21:58 奋斗青春 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 题目的意思是把表达式中能去掉的括号都给去掉,但不改变运算符,能够去掉的左括号至少满足以下条件中的一个:1、括号左面不是‘-’2、最外层的括号3、单个变量外面的括号代码:# include<stdio.h># include<string.h>int main(){ int i,j,k,n,s[300],pre[300],visit[300],word; char str1[300],str[300]; scanf("%d",&n); getchar(); while(n--) { gets(str1); k=0; j=0; for(i=0;s 阅读全文
posted @ 2011-04-07 17:48 奋斗青春 阅读(462) 评论(0) 推荐(0) 编辑