随笔分类 -  acm--杭电

hdu1251----统计难题(初次接触字典树)
摘要:Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Input 输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每... 阅读全文
posted @ 2009-01-24 10:16 pandy 阅读(648) 评论(0) 推荐(0) 编辑
hdu1024--Max Sum Plus Plus
摘要:学习网上某位朋友的做法。 基本思想:b(i,j) = Max{ b(i, j-1) + e[j], Max{ b(i-1, t) } + e[j] } (i #include int maxsum(int e[], int n, int m) { int *curr_best; int *prev_best; int max_sum, i, j; ... 阅读全文
posted @ 2008-11-08 11:46 pandy 阅读(918) 评论(0) 推荐(0) 编辑
hdu1160--fatmouse.speed
摘要:动态规划题,麻烦在要输出一个最优解 代码如下: #include #include #include struct tmice{ int weight; int speed; int id; }mice[1001]; int f[1001],r[1001],b[1001]; int compare( const void * a, const void *b) { ... 阅读全文
posted @ 2008-10-30 09:00 pandy 阅读(430) 评论(1) 推荐(0) 编辑
hdu1003--Max Sum
摘要:看过杭电课件后做的第一道动态规划题 附上代码如下: #include int main() { int t,n,num,sum,max,begin,end,temp,count,i; scanf("%d",&t); for(count=1;countmax) { max=sum; begin=temp; end=i; } } print... 阅读全文
posted @ 2008-10-29 23:32 pandy 阅读(1697) 评论(4) 推荐(0) 编辑
hdu1290--献给杭电五十周年校庆的礼物
摘要:递推题 考虑:n个平面最多可以把空间分成几个部分 使第n个平面与前面n-1个平面都相交,且交线都不重合,那么n-1条直线最多可以把平面划分成为 n(n-1)/2+1个部分,所以f(n)=f(n-1)+n(n-1)/2 最后可以推出公式:f(n)=(n^3+5n+6)/6 源代码如下: #include int main() { int n; while(scanf("%d",&n)!=EOF... 阅读全文
posted @ 2008-10-29 00:19 pandy 阅读(486) 评论(0) 推荐(0) 编辑
hdu1020--Encoding
摘要:简单题 代码如下: #include void process(char s[]) { int i,num; for(i=0;s[i]!='\0';i++) { num=1; while(s[i]==s[i+1]&&s[i+1]!='\0') { num++;i++; } ... 阅读全文
posted @ 2008-10-24 21:25 pandy 阅读(556) 评论(0) 推荐(0) 编辑
hdu1019--Least Common Multiple
摘要:简单题(只需要注意一下求公倍数时先除后乘) 代码如下: #include int gcd(__int64 n,__int64 m) { if(m==0) return n; return gcd(m,n%m); } int main() { int t,n; __int64 x1,x2; scanf("%d",&t); while(t--) ... 阅读全文
posted @ 2008-10-24 21:05 pandy 阅读(342) 评论(0) 推荐(0) 编辑
hdu1014--Uniform Generator
摘要:1.使用暴力穷举法:注意条件判断 代码如下: #include #include bool m[100001]; int main() { int mod,step,seed,num; while(scanf("%d %d",&step,&mod)!=EOF) { memset(m,0,sizeof(m));seed=0;num = 0; while(!(m[seed%mod])... 阅读全文
posted @ 2008-10-24 20:51 pandy 阅读(481) 评论(0) 推荐(0) 编辑
pdu1012--u Calculate e
摘要:简单题 代码如下: #include int main() { int x=2,i=3; double sum = 2.5; printf("n e\n"); printf("- -----------\n0 1\n1 2\n2 2.5\n"); for(i = 3; i != 10; i++){ x*=i; sum+=1.0... 阅读全文
posted @ 2008-10-24 17:59 pandy 阅读(251) 评论(0) 推荐(0) 编辑
hdu1049--Climbing Worm
摘要:由于输入数据规模不大,用简单模拟即可 代码如下: #include int main() { int d,u,n,x,time; while(scanf("%d %d %d",&n,&u,&d),n) { x=0;time=0; while(1) { x+=u;time++;if(x>=n) break; ... 阅读全文
posted @ 2008-10-24 17:50 pandy 阅读(374) 评论(0) 推荐(0) 编辑
hdu--Number Sequence
摘要:总结: 找循环节点, 使用一个二维数组visited[i][j]来存放前两个数为i,j时的这个数出现的位置。 算出周期,再用一定的公式就可以解出。 代码如下: #include int main() { int a,b,n,f1,f2,f3,i,j,t,num; while(scanf("%d %d %d",&a,&b,&n),a||b||n) { f1=1;f2=1;int vis... 阅读全文
posted @ 2008-10-24 17:26 pandy 阅读(523) 评论(0) 推荐(0) 编辑
hdu1071--The area
摘要:用到求抛物线系数公式,直线系数公式,再用简单积分来求面积。 注意: 做这类精度题目要小心 计算公式时能不用中间变量就不用, 虽然代码会明显增长,可是可以提高精度 在做这道题目时,我就花了很多时间在公式的优化上。 源代码如下: #include int main() { double p1x,p2x,p3x,p1y,p2y,p3y; double a,b,c,k,m,result,x; ... 阅读全文
posted @ 2008-10-24 01:28 pandy 阅读(355) 评论(0) 推荐(0) 编辑
hdu1021--Fibonacci Again
摘要:简单推理题: 考虑两个数和能被3整除,这两个数有什么特点。 多算几个数,便可以找到规律,从2开始以4个循环都是3的倍数 所以写出代码如下: #include int main() { int n; while(scanf("%d",&n)!=EOF) { if(n%4==2) printf("yes\n"); else printf("no\n"); } return... 阅读全文
posted @ 2008-10-24 00:33 pandy 阅读(654) 评论(2) 推荐(0) 编辑
hdu1170--Balloon Comes!
摘要:简单题,代码如下: #include int main() { int t,a,b; char c; scanf("%d",&t); while(t--) { getchar(); scanf("%c %d %d",&c,&a,&b); if(c=='+') printf("%d\n",a+b); else if(c=='-') printf("%d\n"... 阅读全文
posted @ 2008-10-24 00:14 pandy 阅读(466) 评论(4) 推荐(0) 编辑
hdu1018--Big Number
摘要:主要是使用了下面这个公式: log10(n!)=log10(1*2*3…*n)=log10(1)+log10(2)+…+log10(n) 注意: 这边的result要用double值,精度比较高,我wrong了一次就因为把它设成float值了 代码如下: #include #include int main() { int n,t; double result; scanf("%d",... 阅读全文
posted @ 2008-10-24 00:01 pandy 阅读(515) 评论(1) 推荐(0) 编辑
hdu1017--A Mathematical Curiosity
摘要:简单题:使用暴力枚举即可。。。 主要是要注意输出格式 程序代码如下: #include void process(int n,int m) { int a,b,count=0; for(a=1;a<n-1;a++) for(b=a+1;b<n;b++) { if((a*a+b*b+m)%(a*b)==0) ... 阅读全文
posted @ 2008-10-23 23:35 pandy 阅读(575) 评论(0) 推荐(0) 编辑
hdu1016--Prime Ring Problem
摘要:406MS 12K 729 B 用深度优先搜索。 小技巧: 设置一个bool数组:将40以内所有以素数为下标的元素置1 用used数组标记深搜时元素是否访问过 用b数组记录一个解 输入时判断n是否为奇数或者1. 注意: 输出时每个解行后面没有多余的空格。 源代码如下: #in... 阅读全文
posted @ 2008-10-23 22:54 pandy 阅读(637) 评论(0) 推荐(0) 编辑