心得
文章平均质量分 56
sffsdfdfgfdgfd
这个作者很懒,什么都没留下…
展开
-
用strlen()时的粗心
http://acm.pku.edu.cn/JudgeOnline/problem?id=3193 strlen()放在for()里面,反复进行多余的调用,导致超时 正确代码:while(m--){ gets(str); len=strlen(str); for(i=0; i<n; i++) { if(leng[i] < len) conti原创 2010-05-17 23:23:00 · 463 阅读 · 0 评论 -
poj 1579
起先还以为照着题目写下递归就好了,可是运行到50 50 50时,怎么也出不了答案,寒,原来要用记忆化搜索,这样可以省去重复操作。#includelong num[21][21][21]={0};long w(int a,int b,int c){ if(a0 || b0 || c0) return 1; if(a>20 || b>20 || c>20) return w(原创 2010-03-24 20:39:00 · 526 阅读 · 0 评论 -
poj 1642
输出两个:一个是以左面为底,以底为右面(以cube[0][0]为行数,以row为列数);另一个是以右面为底,以底为左面(以输入首行列数为输出行数,以输入行数row为输出列数)。 提交至今没有一次PE,倒是re和wa,其实是因为判断PE在后,前面还没通过罢了(个人觉得PE主要因为:每个case之内空一行,每两个case之间空两行,若最后输入是0,那么,上一个case和0之间不存在空行,如下开原创 2010-03-22 22:38:00 · 620 阅读 · 0 评论 -
poj 2271
思维不严谨,以致pe无数。再次悲剧 部分代码://freopen("output.txt","w",stdout);while(scanf("%s",word)!=EOF){ if(strcmp(word,"") == 0){ line_len=0; ok=1; printf("/n"); } else if(strcmp(word,"") == 0){ if原创 2010-03-17 18:13:00 · 372 阅读 · 0 评论 -
poj 3299
再次遭受到复制黏贴的报应。复制过来后,函数名没改,o(︶︿︶)o 唉o(︶︿︶)o 唉o(︶︿︶)o 唉o(︶︿︶)o 唉 T D H,已知其二求第三者;注意输出格式原创 2010-03-16 21:39:00 · 281 阅读 · 0 评论 -
计算nth 个质因数是p1,p2,p3的数
poj1338 大致求法#includeint main(){ long long p1,p2,p3,a,b,c,i,n,d[10000],t1,t2,t3; scanf("%lld%lld%lld%lld",&p1,&p2,&p3,&n); d[0]=1; a=0;b=0;c=0; for(i=1;i { t1=d[a]*p1; t2=d[b]*p2; t3=d[c]*p3;原创 2010-03-14 16:50:00 · 519 阅读 · 0 评论 -
MOD
给你二个整数p和a,其中p是质数。求ap除以p后的余数。 输入: 每一行包含a和p,p=0时结束输入,最后一行输入不处理。输出: 每一行输出所求的值。 例子:In: 2 22 31 0 Out:02 Hint: 1 0时,因为p = 0, 结束输入。Source:WT原创 2010-03-14 14:06:00 · 485 阅读 · 0 评论 -
poj 1496&1850
终于做出来了,不禁长舒一口气。历时+-8小时,倍感压力巨大。接下来说说我的心得吧:这题用到的是组合的知识;处理第一位字母时,需要计算之前的字母排序数,第一位有其特殊之处:如:bcd,处理b位时,前面有 口??,和a??两种情况,我们只要处理2次就可以了;处理末位时,只要计算(当前位字母-前一位字母)即可;处理首末之间位置时,就要考虑两种情况:比如bexy,处理e位时,1原创 2010-03-11 19:35:00 · 385 阅读 · 0 评论 -
poj 2190
题目:一共有10位数,当且只有最后一位若等于10的话,用X表示(当然输入输出都需要考虑 是否是 ‘X’)For example 0201103311 is a valid ISBN, since 10*0 + 9*2 + 8*0 + 7*1 + 6*1 + 5*0 + 4*3 + 3*3 + 2*1 + 1*1 = 55. 找出带‘?’的那位上的数值,并输出,若不能找到,则输出‘-1’原创 2010-03-09 19:43:00 · 558 阅读 · 0 评论 -
poj 1922
骑车去学校,题目意思:从A地开始,当刚到A地时,如果有车就跟着出发,不然就等车来,再跟着。如果途中有比当前行驶速度大的车,就跟着那辆。求到B的时间。思路:如果Ti为负,则说明,在主人公到A地前|Ti|s已经经过A地,如果能被主人公赶上,则 i 的速度不及主人公的速度,还有一种情况是主人公一直都没追上。所以这种数据可以忽略。接下来就是Ti>=0的了,我们可以这样想:如果如果主人公原创 2010-03-09 16:38:00 · 420 阅读 · 0 评论 -
poj 1657
四个子的走法:王:横、直、斜都可以走,但每步限走一格。 step=max(m,n); 后:横、直、斜都可以走,每步格数不受限制。 if(m==n||m==0||n==0) step=1;else step=2;车:横、竖均可以走,不能斜走,格数不限。 if(m==0||n==0) step=1;else step=2;象:只能斜走,格数不限。 if(m==n) ste原创 2010-03-07 16:01:00 · 351 阅读 · 0 评论 -
Do the Untwist
运用此公式: ccode[i] = (pcode[ k * i % n ] - i ) % 28 推出: pcode[ k * i % n ] = ( ccode[i] + i ) % 28.#include#includeint char_int(char c){ if(c==_) return 0; if(c==.) return 27原创 2010-03-25 21:18:00 · 343 阅读 · 0 评论 -
poj 2453
显然是位操作题做得有点没效率 考虑三种情况:从低位读起,第一个读到的1后是0(例*0010*,则处理后为*0100*)从低位读起,读到一串1,分两种情况,a。最低位为1(例*0111,处理后为*1011);b。最低位为0(例*001110,处理后为*010011)#include#includeint main(){ int i,t; lo原创 2010-03-27 22:43:00 · 365 阅读 · 0 评论 -
整数的标准输出
整数的标准输出Time limit: 1000MS Memory limit: 32768K Total Submit: 449 Accepted: 161 输入一个整数N(-10^100 ,输出N的标准式,即每3位用逗号分隔(除非该数字不足4位)。 输入格式:测试输入即给出一个整数N。 输出格式:在一行中输出N的标准式。Source原创 2010-03-29 18:45:00 · 444 阅读 · 0 评论 -
“-=” 粗心了
目的是 tot = (tot - num + debt[i])一不小心就写成这样了:tot -= num + debt[i]; 应该是这样的:tot = tot - num + debt[i]; 代码可是看了很久,才找到错误的,细节决定成败啊;纪念下!!!原创 2010-04-20 21:34:00 · 330 阅读 · 0 评论 -
运动会(sort+结构体+分段sort)
运动会 Time limit: 1000MS Memory limit: 32768K Total Submit: 53 Accepted: 27 学校一年一度的运动会开始了,由于参加的运动员人数相当多使得名单变得杂乱无章,现在给你一张名单让你对这张名单进行排序,使得排序后变得清晰一点。input输入一个整数N(N接下来N行,每行3个整数K,V,P分别代表他们的原创 2010-04-20 17:46:00 · 620 阅读 · 0 评论 -
poj 2229
SumsetsTime Limit: 2000MS Memory Limit: 200000KTotal Submissions: 6980 Accepted: 2763DescriptionFarmer John commanded his cows to search for different sets of numbers that sum to a given number. The原创 2010-04-06 22:24:00 · 810 阅读 · 0 评论 -
字符串输入
输入: 输入文件中有多组case。每一组case第一行包含一个整数N(1 ),表示队员的人数。接下来的N行包含2个值:字符串name(长度不超过64)和整数id(1 ),表示队员的名字和他(她)的号码, name 和 id之间有一个空格隔开, id是唯一的。 接下来那行包含一个整数K(0 )),在接下来的K行中,每一行包含一个整数x(1 ),表示随机产生的id号。 输出:原创 2010-04-03 13:26:00 · 603 阅读 · 0 评论 -
poj 1917
题目理解错误:第一行: 形式是:s1s3s5,只切分成5段,si可能为空或空格;第二行输出形式: ***s4s3s2s5; 就这么简单,还以为要区分单词的,做得很复杂。原创 2010-04-01 14:19:00 · 374 阅读 · 0 评论 -
集合划分问题I
集合划分问题I Time limit: 1000MS Memory limit: 32768K Total Submit: 174 Accepted: 64 问题描述:n个元素的集合{1,2,, n }可以划分为若干个非空子集。例如,当n=4 时,集合{1,2,3,4}可以划分为15 个不同的非空子集如下:{{1},{2},{3},{4}},{{1,2},{3原创 2010-04-12 20:24:00 · 1078 阅读 · 0 评论 -
众数问题
众数问题 Time limit: 5000MS Memory limit: 32768K Total Submit: 1128 Accepted: 276 问题描述:给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数为3。对于给定的由n 个原创 2010-04-12 14:25:00 · 779 阅读 · 0 评论 -
排列的字典序问题
排列的字典序问题 Time limit: 1000MS Memory limit: 32768K Total Submit: 104 Accepted: 38 问题描述:n个元素{1,2,, n }有n!个不同的排列。将这n!个排列按字典序排列,并编号为0,1,…,n!-1。每个排列的编号为其字典序值。例如,当n=3时,6 个不同排列的字典序值如下:字典序值原创 2010-04-12 19:56:00 · 2930 阅读 · 1 评论 -
poj 3630
思路:用qsort对字符串数组进行排序,由于父串与子串相邻,则只要比较相邻串是否符合就行了(通过比较相邻字符串长度,选择长度小的作为判断长度) 这次掌握了对字符串数组的快排;不过还有人用trie树来做的,目前还不会。 用到的部分代码:qsort(num,n,sizeof(num[0]),cmp);for(i=0;i<n;i++) len[i]=strlen(num[原创 2010-03-31 21:22:00 · 441 阅读 · 0 评论 -
士兵站队问题
士兵站队问题 Time limit: 1000MS Memory limit: 32768K Total Submit: 154 Accepted: 76 问题描述:在一个划分成网格的操场上,n个士兵散乱地站在网格点上。网格点由整数坐标(x,y)表示。士兵们可以沿网格边上、下、左、右移动一步,但在同一时刻任一网格点上只能有一名士兵。按照军官的命令,士兵们要整齐地原创 2010-04-12 12:26:00 · 5371 阅读 · 2 评论 -
poj 2291
废话不多说,题目意思是求绳子能提起物体最大的质量。算法设计不好,还去动用double,居然搞的qsort不能排double,不过我也发现了这一点(要弥补下),再去换乘强制转换,弄得很复杂。关键还是在if语句,只要用maxo(︶︿︶)o 唉。。还搞得超时、原创 2010-03-06 13:07:00 · 457 阅读 · 0 评论 -
poj 1450
自己画图,根据m和n的奇偶性来做:至少有一个为even,则((m-1)+(n-1))*2+(m-2)*(n-2),即m*n。若都为odd,则((m-1)+(n-1))*2+(m-3)*(n-2)+(n-3)+sqrt(2),即m*n-1+sqrt(2),简写成m*n+0.41。原创 2010-03-07 14:41:00 · 783 阅读 · 0 评论 -
poj 2080
自以为蛮简单的议题,没想到wa了好几次,re了好几次,还有一次ce。。。。re的代码:#includeint main(){ long days,temp,t; int month[12],k,i,year; char week[7][10]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};原创 2010-02-27 13:47:00 · 558 阅读 · 0 评论 -
poj 1032
思路按照2+3+4+...求和for(i=2;n-sum>i;i++) /*利用循环并判断n-m是否 sum+=i; printf("%d",2); /*= ,则利用循环打出*/ for(t=3;t printf(" %d",t);t=n-sum; /*余几*/ /* s=i-2; /*数列个数*/原创 2010-02-26 20:22:00 · 340 阅读 · 0 评论 -
POJ1016
这题是今年的开年题,没想到卡了好几个小时。主要因为是没彻底看懂题意 n is self-inventorying 第一次处理后与输入一致n is self-inventorying after j steps 再经>1次处理后与输入一致n enters an inventory loop of length k 再经>1次处理后,出现循环n can not be class原创 2010-02-25 12:16:00 · 380 阅读 · 0 评论 -
poj 1026 解题报告
104 5 3 7 2 8 1 6 10 91 Hello Bob1995 CERC0(n)0(k)n1-n(不重复,无序排列)k(执行次数) 字符串(注意字符串开头可以为空,这里不能用scanf()来读入字符串) #include#includeint cipher(int k_key[200],int i,int k) //肯能会产生循环,为了节省时间,寻找最小原创 2010-02-26 14:53:00 · 352 阅读 · 0 评论 -
poj 1690
题目很简单,做得很失败。就因为少了一个判断,犯下了致命的错误。len=strlen(a);for(i=0,k=0;ilen;i++) //去空格 if(a[i]!= ) b[k++]=a[i]; b[k]=/0; len=strlen(b); for(i=1;ilen-1;i++) //去 类似(((A))),的“()” if(b[i]>=A原创 2010-02-28 19:16:00 · 581 阅读 · 0 评论 -
poj 1503
我是这样想的:把每个字符串的长度存起来,并且比出最大的。然后分别从字符串末尾加起,好比从数字中的低位加起,当然中间需要加判断,某个字符串已经读完。num[100]放的是加起来后的后面max长度部分的数据,在num[100][0]中放不下的,存入start中,输出时只要判断,若>0,则输出,否则不用输出。#include#includeint main(){ int原创 2010-02-28 14:36:00 · 279 阅读 · 0 评论 -
poj 1423
说实在的,没有公式,那我真就下不了手了。。。《计算机程序设计艺术》给出的公式n!=sqrt(2*pi*n)*((n/e)^n)*(1+1/(12*n)+1/(288*n*n)+O(1/n^3));#include#includeint main(){ int t,i; long n; const double pi=3.141592653589; const d原创 2010-02-27 22:34:00 · 335 阅读 · 0 评论 -
poj 1056
数组不要死扣着8和11,适当开大点。以输入‘9’为一组codes的结尾。我的想法是套用三个for循环,前两个形式类似冒泡法,来选择前一对 比前一个code短的另一个code 第三个是比较这第一个code是否为后者的前缀。原创 2010-02-26 22:39:00 · 468 阅读 · 0 评论 -
郁闷的程序
vc上只执行到第四个for循环。poj上报ce。。。。#includeint main(){int flag,tot,t=1,a1,a2,a3,a4,a5,a6,t1,t2,t3,t4,t5,t6,sum;while(scanf("%d%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5,&a6)!=EOF){ tot=a1+2*a2+3*a3+4*a4+5*a5+6*a6;原创 2010-02-24 11:02:00 · 313 阅读 · 0 评论 -
给字符数组不全赋值
#include#includeint main(){ int i=0,zlen=1; char temp[100],str[101][10]={"asdf","dfsvfgv"}; /*注:参照此格式*/ while(scanf("%s",temp)!=EOF) { if(strcmp(temp,"QUIT")==0) break;..........原创 2010-02-24 10:46:00 · 665 阅读 · 0 评论 -
poj 1504
这题做得相当郁闷,不过还是调试出来了错在哪。代码写得长了。思路:(不考虑读入数前导0)字符数组读入,经chtoint转换成int,再经inttoch转换成char。#include#includeint chtoint(char str[]){ int sum,i,len,flag=1; len=strlen(str); for(i=len-1;;i--)原创 2010-02-27 16:23:00 · 376 阅读 · 0 评论 -
poj 3627
题目没看清楚啊。。。最少多少可以≥b,还以为最多了。实在无语原创 2010-03-03 20:37:00 · 460 阅读 · 0 评论 -
poj 2140
求和公式:(i+(i+m-1))*m=2*n,即:(2*i+m-1)*m=2*n,i为首项,m为项数,n为测试数。由公式可以分析出:2*n%m==0;(2*n/m+1-m)%2==0;∵2*i+m-1>m,∴m2根据以上几点,就可以编了。原创 2010-03-01 12:53:00 · 547 阅读 · 0 评论 -
poj 1604
fac%=1000000; 这个用的很妙原创 2010-03-07 00:07:00 · 286 阅读 · 0 评论