上一页 1 ··· 28 29 30 31 32 33 34 35 36 ··· 57 下一页

2011年7月22日

poj 2255 Tree Recovery

摘要: #include <iostream> //给出先序和中序遍历序列,输出后序遍历序列#include <string.h>using namespace std;const int MAXLEN=100;void build(int len,char* s1,char* s2,char* s) //s1,s2和s都是在不断变化,所以s1[0]...也随之不同{ if(len<=0) return; s[len-1]=s1[0]; //把根结点添加到最后 int p=strchr(s2,s1[0])-s2; //找到根结点在中序遍历... 阅读全文

posted @ 2011-07-22 14:57 sysu_mjc 阅读(110) 评论(0) 推荐(0) 编辑

poj 2001 Shortest Prefixes

摘要: // 题意: 输入一些字符串,求每个字符串的最短非公共前缀,若没有则输出自身#include <iostream> //trie树#include <string>using namespace std ;struct Node { int next[26]; int cnt;}table[20100];char str[1000][22];int tot,cur;void init(){ memset(table[0].next,-1,sizeof(table[0].next)); cur=1; tot=0;}void insert... 阅读全文

posted @ 2011-07-22 14:56 sysu_mjc 阅读(179) 评论(0) 推荐(0) 编辑

poj 2187 Beauty Contest

摘要: #include <iostream> //求平面最远点对,由于最远点对必然在凸包上,所以先构建出凸包,再枚举凸包上的点 #include <algorithm>using namespace std;struct point { int x,y;}st;point dot[50001];int dis(point a,point b) //这道题的两点距离并不用开平方{ return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y); //耗时为200ms左右,但若使用 pow函数时间会暴增到2500ms左右... 阅读全文

posted @ 2011-07-22 14:56 sysu_mjc 阅读(122) 评论(0) 推荐(0) 编辑

poj 1953 World Cup Noise

摘要: #include <iostream> //斐波那契数列using namespace std;int main(){ int fib[50]={1,2},c,n,i; for(i=2;i<45;++i) fib[i]=fib[i-1]+fib[i-2]; cin>>c; for(i=1;i<=c;++i) { cin>>n; cout<<"Scenario #"<<i<<":\n"<<fib[n]<<endl<<endl; } ret 阅读全文

posted @ 2011-07-22 14:55 sysu_mjc 阅读(81) 评论(0) 推荐(0) 编辑

poj 1988 Cube Stacking

摘要: // 题意:有n个编号[1,n]的箱子,将每个箱子当做一个栈,有两种操作:// M a b: 表示将 编号为 a 的箱子所在的栈 放在 编号为 b 的箱子所在栈 的 栈顶 .// C a: 计算编号为a的所表示的栈中在a号箱子下面的箱子数目.#include <iostream> //并查集using namespace std;#define maxn 30002int p[maxn],num[maxn],under[maxn]; // num[i] 表示编号为i所在的集合(栈)的元素个数// under[i] 表示编号为i的节点到其根节点的路径上的元素个数(除了它本身)... 阅读全文

posted @ 2011-07-22 14:55 sysu_mjc 阅读(137) 评论(0) 推荐(0) 编辑

poj 1905 Expanding Rods

摘要: #include <iostream> //二分查找#include <math.h>using namespace std;#define precisions 1e-5int main(){ double l,n,c,a; double begin,end,mid,r,angle; while(cin>>l>>n>>c&&l>=0) { a=l/2; begin=0;end=a; l=(1.0+n*c)*l; while(end-begin>precisions) { mid=(end+begin)/2 阅读全文

posted @ 2011-07-22 14:54 sysu_mjc 阅读(115) 评论(0) 推荐(0) 编辑

poj 1703 Find them, Catch them

摘要: // 题意: 给出n个人和m组数据,每组数据的形式为:s x y,// 当s='D'时表示编号为x和y的人不在同一组; 当s='A'时要求你确定编号为x和y的人是否在同一组#include <iostream> //并查集using namespace std;int p[100002],diff[100002],n,m; //diff[i]=j表示编号为j跟编号为i的人不在同一组void init(){ for(int i=1;i<=n;++i) { p[i]=i; diff[i]=-1; }}int find(int... 阅读全文

posted @ 2011-07-22 14:53 sysu_mjc 阅读(131) 评论(0) 推荐(0) 编辑

poj 1775 Sum of Factorials

摘要: #include <iostream>using namespace std;int fac[10]={1};int main(){ for(int i=1;i<10;++i) fac[i]=fac[i-1]*i; int n ,flag; while(cin>>n&&n>=0) { flag=1; for(int i=9;i>=0;--i) { if(fac[i]>n) continue; n-=fac[i]; if(n==0) { flag=0; printf("YES\n"); break; } } if 阅读全文

posted @ 2011-07-22 14:53 sysu_mjc 阅读(78) 评论(0) 推荐(0) 编辑

poj 1469 COURSES

摘要: // poj4 1469 COURSES// 题意: 现在有p门课程和n个学生,给出每门课程都有哪些学生可以参加.// 问能否找到p个学生,满足每个学生代表一门课程而且每门课程只由一个学生代表// 思路:求解二分图的最大匹配数,看与p是否相等#include<iostream> //二分图的最大匹配#include<cstring>using namespace std;int p,n;int link[305]; // link[ b ] = a 表示 V2中的点b 与 V1中的点a 相匹配int edge[105][305],vis[305]; // ed... 阅读全文

posted @ 2011-07-22 14:52 sysu_mjc 阅读(115) 评论(0) 推荐(0) 编辑

poj 1401 Factorial

摘要: #include <iostream>using namespace std;int factorial(int n){ int s=0; while(n>=5) { s+=n/5; n=n/5; } return s;}int main(){ int t,n; cin>>t; while(t--) { cin>>n; cout<<factorial(n)<<endl; }}//逢五进一,比如60//有 5 10 15 20 25 30 35 40 45 50 55 60 (60/5=12)//上面的数列除以5后,得 1 2 3 阅读全文

posted @ 2011-07-22 14:51 sysu_mjc 阅读(81) 评论(0) 推荐(0) 编辑

上一页 1 ··· 28 29 30 31 32 33 34 35 36 ··· 57 下一页

导航