有总结价值的
文章平均质量分 53
mafeichao
这个作者很懒,什么都没留下…
展开
-
ZD_source code for problem 2971
题目链接:http://acm.zju.edu.cn/show_problem.php?pid=2971解题心得:1,用scanf("%d",&i)接受整型后,再用gets接受带空格的字符串之前要调用getchar将/n滤掉2,用关键字是字符串的map时要用string类型#include #include #include #include using namespace std原创 2008-06-07 11:32:00 · 571 阅读 · 0 评论 -
JD_Source Code for problem 1581
题目链接:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1581 解题心得: 1,VC的64位整数分别叫做__int64与unsigned __int64,其范围分别是[-2^63, 2^63)与[0,2^64),即-9223372036854775808~9223372036854775807与 0~1844674407370955161原创 2008-06-07 10:58:00 · 570 阅读 · 0 评论 -
JD_Source Code for problem 1379
题目链接:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1379解题心得:1,基本的语法不要弄错,当时做的时候,memset用错了,错因是把第二个参数传为数组的大小,第三个参数传为要设的值了,实际应该是参数二为要设的值,参数三为数组大小,并且为整型数组赋值时第二个参数只有为0或-1时才能达到预期效果。2,在用标准库中的集合和数组时,一定要考原创 2008-06-07 11:18:00 · 513 阅读 · 0 评论 -
北大1002题
题目连接http://acm.pku.edu.cn/JudgeOnline/problem?id=1002#include #include using namespace std;int main(){ freopen("in.txt","r",stdin); int DialNum[100001],Map[26],count,i,j; char str[50];//这里坑了我n次,原先原创 2008-10-16 21:25:00 · 534 阅读 · 0 评论 -
北大1517题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1517心得主要是:c++的setprecistion函数设置的是有效数字的位数,我一直认为是小数的位数呢,所以刚开始一直是WA。再有就是中间结果的应用,减少运算次数。我第一个版本用得不彻底,第二个才比较满意。版本一:#include #include using namespace s原创 2008-10-19 20:16:00 · 509 阅读 · 0 评论 -
北大1503题
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1503总结:多个长度最多为n为的数相加,结果可能为n+2位,调整完毕后要检测最高为是否大于等于10和是否大于0两种情况;计算结果的长度时,可以通过count来维护,也可以通过最后反向查找第一个非0的数所在的位置,来确定长度。版本一:#include #include #inclu原创 2008-10-18 12:22:00 · 462 阅读 · 0 评论 -
北大1068题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1068之所以写上来主要是因为自己太贪图技巧了,开始的时候一直去想数字之间的对应关系,没有想到直接模拟。浪费了不少时间。再有字符串的查找函数的第一个参数是要查找的字符,第二个参数是查找的起始下标,str.find(tar,index);#include #include using name原创 2008-10-20 19:38:00 · 511 阅读 · 0 评论 -
北大1519题
通过这个题应该知道,当题目中没有给出明确限制时,也要考虑到最坏的情况,此题并没有说数字会有多长,如果直接用int、long、usigned的类型去做,就会产生错误,明智之举是用string,它不用考虑分配多少内存。 #include #include using namespace std;int main(int argc, char* argv[]){ freopen("in.tx原创 2008-10-18 16:00:00 · 469 阅读 · 0 评论 -
北大1547
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1547#include #include using namespace std;struct Student{ int dim; char name[9];};int main(){ int i,a,b,c,v,count; char name[9]; Student min,max原创 2008-10-19 18:09:00 · 451 阅读 · 0 评论 -
北大1120
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1120这道题太郁闷了,照理说从文件读入时,用while和不用while没什么区别吧,为什么错了呢?#include using namespace std;int main(){ freopen("in.txt","r",stdin); int i,j,k,m,n,t,days,D[1原创 2008-10-23 16:09:00 · 497 阅读 · 0 评论 -
浙大2104
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2104这道题主要用了multiset使程序设计简单了很多#pragma warning(disable:4786)#include #include #include using namespace std;int main(){ freopen("in原创 2008-10-24 15:58:00 · 415 阅读 · 0 评论 -
北大2039题
//题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=2039 这道题主要用了简单的预处理,根据题意对src的奇数行的存储内容进行逆转,然后计算出src中每列的开始元素在des中的开始下标,最后直接扫描映射就可以了。这道题的收获还是不小的!#include #include #include using namespace std;in原创 2008-10-24 16:41:00 · 453 阅读 · 0 评论 -
浙大1797
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=17971,求两个数的最大公约数用辗转相除法,求多个数的最大公约数可以先求两个数的最大公约数,用结果去与第三个数求最大公约数,直到结束。2,求两个数的最小公倍数可以用辗转相除法求出两个数的最大公约数然后用两个数的积除以它就可以得到了,求多个数的最小公倍数,先求原创 2008-10-24 20:47:00 · 658 阅读 · 0 评论 -
北大1484题
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1484错误版本#include#includeusing namespace std;int main(){ freopen("in.txt","r",stdin); bool on[21]; int m,n,c,i,j,all,max,time,consume[21]; time = 1原创 2008-10-24 22:25:00 · 505 阅读 · 0 评论 -
北大2590题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=25901,这个题用到的思想是贪心和等效替换,具体思路是让两边同时向中间走,初始长度是1,以后每步递增1,直到肯能的最多步为止,最终形成的序列是1、2、3……n-1、n、n-1……3、2、1。这个序列的长度是n^2,找到不超过x、y差值的最大n,则当取n+1时必然超过x、y差值,当去定n后,右原创 2008-10-29 11:01:00 · 537 阅读 · 0 评论 -
浙大1622题
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1622这个题就是个简单的模拟题,对每个实例用第一盏灯两模拟出一个结果,第一盏等灭模拟出一个结果取较小者即可。#include using namespace std;#define MAX 10000int main(){ freopen("in.t原创 2008-10-29 12:07:00 · 535 阅读 · 0 评论 -
浙大1629
题目连接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=629算法思想:对边长为n的大三角形来说,三角形的总个数包括边长为1、2、3……n的三角形的个数a)、边长为1的三角形的个数为N,由1/2*n*n*sin60 = 1/2*1*1*sin60*N得:N = n*n。b)、边长为i(i>1)的三角形包括正着的原创 2008-10-25 19:09:00 · 497 阅读 · 0 评论 -
北大1019
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1019这个题目很有意思!1,第一次WA很有趣,完全是因为想当然没审清题,错误地认为第i组有i个数字,其实不然从题目给的前80个数字就应该容易看出来,因为当数字大于9时,一个数字就产生了多个数字。2,后来用int做,结果测试i = 2147483647(2^31-1)时,中间结果溢出原创 2008-10-25 21:17:00 · 1223 阅读 · 1 评论 -
北大1006
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1006这道题主要用了中国剩余定理1,剩余问题:在整数除法里,一个数同时除以几个两两互质的数,整数商后均有余数,已知各除数和他们对应的余数求满足条件的被除数的问题。2,中国剩余定理:d1、d2、d3……dn是n个两两互质的整数,若整数x分别被它们除后余数为r1、r2、r3……rn,则满原创 2008-10-29 10:40:00 · 698 阅读 · 0 评论 -
北大2608题
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=2608 这个题主要涉及了“连续元素只处理一个”的解决方法,这个思想从学习STL中得来。就是对逐个处理的一个改进,逐个处理时扫描指针逐一递增,而连续元素只处理一个,需要程序对扫描指针进行适当的控制,具体方法是:每扫描到一个元素,对它进行必要的处理后,就移动指针直到下一个不等于该元素的元素,原创 2008-10-29 11:29:00 · 538 阅读 · 0 评论 -
北大1047题
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1047 这道题难点:1,带前导0的大整数乘法,最终结果怎么处理2,如何判断结果中的数字和原数中的数字是否相同解决方法:1,一个m位数和一个n位数相乘,结果最多为m+n位,最少位m+n-1位。根据本题的条件限制,假设带前导0的op为m位,另一个乘数为1位或者2位且最大不超过6原创 2008-11-01 17:18:00 · 868 阅读 · 0 评论 -
大整数除法
//得到商和余数版本:1,大整数除法运算,不同于其它的大整数运算,它不需要对字符串进行逆转,这主要是因为大整数除法是模拟手算过程,从最高位开始试商。2,试商的过程是调用大整数减法和比较函数的过程,这里的减法运算只实现大数减小数的情形。3,被除数为m位,除数为n位,则商最多为m位,余数最多为n位。4,strcmp("2","123") 结果为1,所以这里必须重新写一个比较函数//原创 2008-11-02 19:43:00 · 9330 阅读 · 0 评论 -
北大3356题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=33561,这个题目背景的提法是两个字符串的编辑距离opt[i][j]表示x串长度为i的前缀和y串长度为j的前缀的最小编辑距离2,最优子结构是:opt[i][j] = min{opt[i-1][j-1] + diff(x[i],y[j]),opt[i-1][j] + 1,opt[i][j-原创 2008-12-31 22:08:00 · 626 阅读 · 0 评论 -
北大1631题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1631写了三个版本,第一个版本到现在也没搞清楚哪里有问题 版本一:1,这个问题就是要求线路的最大不相交子集中元素的个数,opt[i][j]代表左方前i条线在右方j个接线柱范围内的最优值2,最优子结构是:opt[i][j] = opt[i-1][j](end[i]>j时)或者m原创 2008-12-31 22:14:00 · 588 阅读 · 0 评论 -
北大2192题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=2192 版本一:直接从结果串中对比原串进行字符的分配,这里存在问题就是对两个串中都存在的字符如果分配错误就会导致整个问题的求解的错误,如测试用例中的cat tree catrtee按照这种方法就无法得到正确结果。这个错误为解题探测到更多的信息! #include #include原创 2008-12-31 22:58:00 · 700 阅读 · 0 评论 -
北大1918题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=19181,排名关键字:正解数count降序、时间time升序、队名name升序2,时间time计算:time = f_time+错态提交次数*203,名次调整:rank=1开始,所有具有相同名次的具有相同rank,下一个名次的为当前rank加已赋值有名次的人的数目4,最后还涉及到原创 2009-01-01 10:11:00 · 546 阅读 · 0 评论 -
北大1080题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=10801,opt[i][j]代表x中长度为i的前缀与y中长度为j的前缀的最优值2,最优子结构:opt[i][j] = max(opt[i-1][j-1]+score[x[i]][y[j]],opt[i-1][j]+score[x[i]][-],opt[i][j-1]+score[-原创 2008-12-31 22:43:00 · 611 阅读 · 0 评论 -
北大1590
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1590这个题有两个学点:1,对于这种映射关系应该如何处理?处理方法:如果有规律可以通过循环来设置;如果没有规律只能手动一个一个设置。存储方式:通过直接的哈希表,如本题的解决方法;用map数据结构实现映射;用两个不同的容器在对应位置存储映射的值。如可以char sou原创 2008-11-07 21:43:00 · 725 阅读 · 0 评论 -
北大1491
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1491这里主要学到一个判定两个数是否互质的算法1,用gcd求最大公约数,如果结果为1则互质,否则不互质,复杂度为O(logn)2,从2到较小数依次查看每个数是否是两个数的公约数,有一个就不互质,否则互质,复杂度为O(n)#include #include #include usi原创 2008-11-07 21:56:00 · 679 阅读 · 0 评论 -
北大1102题
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1102 这里主要用到点阵数组对字符进行编码的技巧,model存储了参数为s的每个数字的字模,求出来后对字符串进行编码,然后根据点阵输出内容。 #include #include using namespace std;#define S 10#define D 8void原创 2008-11-07 22:09:00 · 433 阅读 · 0 评论 -
北大1316题
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1316 这道题的算法类似筛法找素数,用一个标志数组标志是否被选中。 #include using namespace std;#define MAX 10001int Find(bool yes[10001],int i){ for(;i if(i > 10000) retur原创 2008-11-07 22:14:00 · 492 阅读 · 0 评论 -
北大1591
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1591 该题类似约瑟夫问题,要处理好报数为1的边界情况。 #include using namespace std;#define MAX 51int main(){ freopen("in.txt","r",stdin); bool ok[MAX],first; int i,原创 2008-11-07 22:21:00 · 528 阅读 · 0 评论 -
北大1595
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1595 这个题涉及到筛法找素数算法,以及几个计数的技巧感觉自己用的挺好的。#include #include using namespace std;#define MAX 1001int main(){ freopen("in.txt","r",stdin); int i,j,原创 2008-11-07 22:25:00 · 563 阅读 · 0 评论 -
北大1887题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1887这个题就是一个求最长单调不升子序列的长度,用n^2的dp即可过!#include using namespace std;#define MAX 10000short height[MAX];unsigned short opt[MAX];int t,i,j,m,len;原创 2008-12-31 22:54:00 · 587 阅读 · 0 评论 -
北大1094题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=10941,用arc[MAX][MAX]存储图,但是有效结点可能少于MAX而且还可能不连续,所以用in[MAX]这个辅助数组标示arc中的哪些结点是有效的2,这道题的输出结果有三种即在若干步骤后能排序、在若干步骤后判定出有环、在所有步骤后判定不能排序。分清三者的逻辑关系是非常重要的,开始一原创 2008-12-31 23:00:00 · 744 阅读 · 0 评论 -
北大1128题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=11281,用acr[MAX][MAX]存储图,但是有效节点可能并不连续地存在,借助in[MAX]数组表示有效节点2,将问题转换成拓扑排序是问题的关键,转换可以实施的条件是:从叠放图中总可以提取出所有叠放对象的边框信息;找到一个边框信息后,这个边框上出现的其它边框信息就时覆盖在这个边框上的原创 2009-01-01 09:34:00 · 609 阅读 · 0 评论 -
北大2080题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=20801,闰年判断法2,今天星期x,n天后星期y:y = (x+n) % 73,今年是x年,n天后是y年:用循环一年一年模拟,直到剩余的天数不足某一年的天数为止4,今天是x月,n天后是y月:先根据是否闰年设置二月份的天数,然后用循环一月一月模拟,直到剩余的天数不足某月为止5,今原创 2009-01-01 10:36:00 · 582 阅读 · 0 评论 -
北大2245题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=2245题目就是要按照字典序打印n个数中取出m个数的组合,递归即可完成。 #include using namespace std;int num[12],res[6],i,n;void Print(int cur,int s){ if(cur == 6) { int i;原创 2009-01-02 21:42:00 · 611 阅读 · 0 评论 -
北大1970题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1970这道题实际是一个简单的搜索题目,对每个位置搜索水平、竖直、主对角线、副对角线进行可满足性搜索,主要处理好下标的对应关系!#include using namespace std;int map[19][19];bool Search(int r,int c,int& rr,原创 2009-01-02 21:47:00 · 556 阅读 · 0 评论 -
北大2487题
题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=248711,这道题与其说是个搜索题目,不如说是一个贪心选择题2,题目的解应该是一个子集,所以按照子集树的算法框架写了一个程序,超时了!3,降序排序,每次选择最多的就可以了!版本一:#include using namespace std;#define MAX 1000原创 2009-01-02 21:51:00 · 590 阅读 · 0 评论