2012年7月15日
摘要: 结构体二级排序,注意保质期只有5天就行。CODE:结构体二级排序(快速)#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<algorithm>usingnamespacestd;constintSIZE=101+10;structnode{charstr[110];intp,v;doubler;}a[SIZE];intcmp(constvoid*a,constvoid*b){node*p1=(node*)a;node*p2=(no 阅读全文
posted @ 2012-07-15 21:12 有间博客 阅读(144) 评论(0) 推荐(0) 编辑
  2012年7月13日
摘要: 模拟高精度题。这题也真是。。。无语了。CODE:#include<stdio.h>#include<stdlib.h>#include<string.h>usingnamespacestd;#defineEND-1constintmaxn=1001;intBigNumber[maxn]={0};voidmultiple(inta[],intn)//大整数相乘{inti,j;intc=0;//进位for(i=1;i<=a[0];i++){a[i]=a[i]*n+c;c=a[i]/10;a[i]%=10;}while(c){a[i++]=c%10;c/=1 阅读全文
posted @ 2012-07-13 11:04 有间博客 阅读(436) 评论(0) 推荐(0) 编辑
  2012年7月12日
摘要: 一、最短路POJ 2449 Remmarguts' Date(中等)http://acm.pku.edu.cn/JudgeOnline/problem?id=2449题意:经典问题:K短路解法:dijkstra+A*(rec),方法很多相关:http://acm.pku.edu.cn/JudgeOnline/showcontest?contest_id=1144该题亦放在搜索推荐题中POJ 3013 - Big Christmas Tree(基础)http://acm.pku.edu.cn/JudgeOnline/problem?id=3013题意:最简单最短路,但此题要过,需要较好的 阅读全文
posted @ 2012-07-12 17:21 有间博客 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了。其实,这既不是充分条件、也不会是必要条件。我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要。其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的时间,我们训练的目的是什么?我觉得有四点1、提高编程能力2、学习算法,(读书,读论文,包括做一些题目验证)3、准备好面临将到来的挑战(熟悉题型,调整心态)4、启发思维。这里四个目的,从训练的角度上,重要性逐次递减;为什么呢?因为前面的因素是后面的基础。而是后面的目的,想达成越为不易。我觉得前3者能保证你ac 阅读全文
posted @ 2012-07-12 10:32 有间博客 阅读(367) 评论(0) 推荐(1) 编辑
  2012年7月11日
摘要: 开始我的思路是:固定一半,另一半用组合公式cn1+cn2+cn3+cn4+.....+cni;最后用全排列减去它们即可。最后发现思路完全不对,必须用错排公式进行计算。即Cnm*a[N-m]; 从N个人中选出m个正确的,用错排公式算出(N-m)没在对应位置的个数。根据分步计数原理,可以得到结果。CODE:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>usingnamespacestd;inta[21];doublePaC(intn,intm)//Permut 阅读全文
posted @ 2012-07-11 16:24 有间博客 阅读(798) 评论(0) 推荐(0) 编辑
摘要: CODE:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<algorithm>usingnamespacestd;intn,u,d;intget_time(){inti;intx=u-d;intcur=0;for(i=1;i<=n/x;i++){cur=i*x;if(cur>=n-u&&cur<n)//还差一步到顶点{break;}}cur=2*i+1;//包括上升和下降的时间,所以乘以2returncur;}intmain(){whil 阅读全文
posted @ 2012-07-11 10:48 有间博客 阅读(148) 评论(0) 推荐(0) 编辑
  2012年7月10日
摘要: 什么是MST?MST就是Most Small Tree,应该就是最小生成树的意思吧,具体不是很清楚,MST性质就是最小生成树性质(以下简称MST性质),我们在看最小生成树的算法的时候,很多情况下都有关于这条性质的说明,比如,历史上最经典的Prim算法和Kruskal算法就是根据这个性质演算出来的Algorithm,MST性质的声明如下:最小生成树性质:设G=(V,E)是一个连通网络,U是顶点集V的一个真子集。若(u,v)是G中一条“一个端点在U中(例如:u∈U),另一个端点不在U中的边(例如:v∈V-U),且(u,v)具有最小权值,则一定存在G的一棵最小生成树包括此边(u,v)。关于这个性质的 阅读全文
posted @ 2012-07-10 16:43 有间博客 阅读(2214) 评论(0) 推荐(2) 编辑
  2012年7月4日
摘要: 思路不清楚。以为要把所有的出栈,进栈的可能都列举出来。正确思路:这个是栈的应用,我们用一个栈s来存放列车的入栈序列, 用一个数组flag存放进出站顺序,如果栈顶和O2的队首是相同的,那么执行出站,且O2指向下一个要出站的坐标,flag标记进站,如果不相同,那么肯定是列车继续进站,s进行push就可以了,flag标记出站,最后如果s的元素已经超过了n,说明n个列车都已经进站了,下一个还是进站肯定不正确。CODE:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h> 阅读全文
posted @ 2012-07-04 20:27 有间博客 阅读(184) 评论(0) 推荐(0) 编辑
  2012年7月3日
摘要: 首先扩展欧几里德主要是用来与求解线性方程相关的问题,所以我们从一个线性方程开始分析。现在假设这个线性方程为a*x+b*y=m,如果这个线性方程有解,那么一定有gcd(a,b) | m,即a,b的最大公约数能够整除m(m%gcd(a,b)==0)。证明很简单,由于a%gcd(a,b)==b%gcd(a,b)==0,所以a*x+b*y肯定能够整除gcd(a,b),如果线性方程成立,那么就可以用m代替a*x+b*y,从而得到上面的结论,利用上面的结论就可以用来判断一个线性方程是否有解。 那么在a*x+b*y=m这个线性方程成立的情况下,如何来求解x和y呢? 1.令a1=a/gcd(a,b),b1=. 阅读全文
posted @ 2012-07-03 16:21 有间博客 阅读(207) 评论(0) 推荐(0) 编辑
  2012年6月2日
摘要: 简单贪心。用结构体数组存储数据。注意:1、qsort给double类型数据排序时注意要用return (*((struct node *)b1)).r > (*((struct node *)a1)).r? 1 : -1;用return (*((struct node *)b1)).r - (*((struct node *)a1)).r; 的话会报错的。CODE:1#include<stdio.h>2#include<stdlib.h>3#include<string.h>4#include<math.h>567constintsize= 阅读全文
posted @ 2012-06-02 20:01 有间博客 阅读(226) 评论(0) 推荐(0) 编辑