上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 51 下一页
摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=2137题意:把一个字符串(奇数个字符)按中间字符为轴逆时针旋转n次后,输出。mark:2WA,n居然可以为负。。。代码:# include <stdio.h># include <string.h>void out0(char str[], int len){puts (str) ;}void out1(char str[], int len){ int i, j ; for (i = len-1 ; i >=0 ; i--) { for (j = 0 ; j < i 阅读全文
posted @ 2012-02-02 12:18 Seraph2012 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=2136题意:问一个数n最大的素因子是第几个素数。mark:之前一直TLE。素数表不打好会TLE,分解素因子的时候不加sqrt优化也会TLE。。。先打好100w的素数表,把素数的位序标记好,然后从1到sqrt(n)分解n,得到n最大的素因子后,再看是第几个。代码:# include <stdio.h># include <math.h>int IsPrime[1000010] ;int Primes[1000010] ;int cnt = 0 ;void init(){ int i 阅读全文
posted @ 2012-02-02 11:54 Seraph2012 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=2065题意:中文。mark:很多人说是指数型母函数,的确指数型母函数可秒,但是出题者的意图更可能是考察递推+矩阵乘法。按状态,长度为n的时候:D[1,n]表示偶数个A、偶数个C的情况数,D[2,n]表示偶数个A、奇数个C的情况数,D[3,n]表示奇数个A、偶数个C的情况数,D[4,n]表示奇数个A、奇数个C的情况数。有长度为n的时候情况可由长度为n-1的情况推来:(D[1,n],D[2,n],D[3,n],D[4,n])*M=(D[1,n+1],D[2,n+1],D[3,n+1],D[4,n+1])。其 阅读全文
posted @ 2012-01-26 21:56 Seraph2012 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=2133题意:输入一个日期,输出不合法(illegal)或星期几。mark:直接计算该日期和0年1月1日(周六)天数差,然后模7就好,注意闰年还有合法性判断要包括0月和0日的情况。代码:# include <stdio.h>int mon[2][13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} ... 阅读全文
posted @ 2012-01-22 06:13 Seraph2012 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=1254题意:中文。mark:BFS+DFS。用BFS来展开箱子的位置和小人的位置,每个节点有2个属性,1是箱子所在位置的坐标,二是一个hash值来表示小人能位于箱子上下左右四个地方的情况(每个方向能否到达用1位来表示,共需要用15)。计算hash值的时候用DFS来穷举小人所有能到达的位置。wa了1次,DFS的时候忘记考虑小人不能穿过箱子的情况。代码:# include <stdio.h># include <string.h>int graph[10][10] ;int n, m 阅读全文
posted @ 2012-01-22 05:54 Seraph2012 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=1728题意:中文。mark:我真是弱爆了。总体思路就是BFS,只不过不是用步数来限制,而是用转弯次数。注意坐标是先纵后横。。。先拍了个DFS,理所当然地TLE了。然后拍了个BFS,其实没想清楚就拍了,结果还TLE。想了半天,BFS没理由TLE啊。然后放了2天,今天想清楚了很多细节,又拍了一个BFS,又TLE了。后来发现是加点至队列的时候,如果一个方向上的某点之前已经访问过,则不加入队列这里,直接写了continue,忘记让x和y坐标变到下一个点去了。。。代码:# include <stdio.h& 阅读全文
posted @ 2012-01-21 15:11 Seraph2012 阅读(548) 评论(0) 推荐(0) 编辑
摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=1180题意:中文。mark:题目没说明楼梯改变情况。sample中的路径应该是先向上走,再向右走,通过楼梯后走到头再向上,这里wa了1次。bfs+优先队列。优先队列用手写堆实现。数据规模很小。代码:# include <stdio.h># include <string.h>char graph[25][25] ;int dr[4][2] = {0,1,0,-1,1,0,-1,0} ;int sx, sy, ex, ey ;int vis[25][25] ;int q[25*25 阅读全文
posted @ 2012-01-20 04:52 Seraph2012 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=1026题意:n*m迷宫,求从(0,0)到(n-1,m-1)的最少时间。'X'是墙,'.'是空地,'1'-'9'表示有怪物,消灭之需要数字对应的时间。mark:最近一直在写搜索题。搜索题有的很费劲,但是写多也就觉得嗯,就那么回事。这题也没啥可说的,直接BFS。和最简单的BFS不同的是,判断一个过去到过的点是否可走,需要多开一个数组来记录,然后判断过去到达的时间和现在到达的时间的大小。(其实最好的方法是优先队列么。。。懒得写而已。)然后因为要求 阅读全文
posted @ 2012-01-17 05:28 Seraph2012 阅读(1072) 评论(0) 推荐(0) 编辑
摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=1418题意:中文。mark:1wa。虽然n、m都是整形范围,但是加起来可能会超过,因此要用long long。不存在m < 2的情况。代码:# include <stdio.h>int main (){ long long n, m ; while (~scanf ("%I64d%I64d", &n, &m) && (n||m)) printf ("%I64d\n", n+m-2) ; return 0 ;} 阅读全文
posted @ 2012-01-13 23:31 Seraph2012 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=1562题意:求最小的[1000,9999]区间内的数x满足x%a==0 && (x+1)%b==0 && (x+2)%c==0。mark:应该是用剩余定理的,不过数据那么小,直接爆了。代码:# include <stdio.h>int main (){ int T, a, b, c, i ; scanf ("%d", &T) ; while (T--) { scanf ("%d%d%d", &a, &am 阅读全文
posted @ 2012-01-13 23:21 Seraph2012 阅读(117) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 51 下一页