ACM之杂题
noname40
这个作者很懒,什么都没留下…
展开
-
poj 2503 qsort+bsearch
题意:输入一个英文单词+空格+外文单词,要求输入外文单词找到对应的英文单词,如果找不到输出eh. 因为单词的输入量是100000,并且还要考虑单词匹配的问题,所以简单的算法应该会超时,本人没有去写。 通过这道题学到了sscanf(),qsort(),bsearch()的用法,感觉比较爽,这道题就是把单词进行快排,有序了以后,然后再二分查找从而节省时间。 #include #include u原创 2012-01-18 11:01:28 · 384 阅读 · 0 评论 -
poj Recaman's Sequence 打表
题意:根据a[i-1] - i 大于0 并且没出现过,或者a[i-1] - i 小于0 求出序列 思路:打表 + hash 标记状态 #include using namespace std; int a[500010]; bool hash[50001000];//hash得开大点 不然RE int main() { a[0] = 0; memset(hash,0,siz原创 2012-03-18 08:58:14 · 383 阅读 · 0 评论 -
poj 2371 questiong and answer
题意:就是一个排序,然后询问第几大的数,输出。。无聊 #include #include using namespace std; int main() { int N , K; int a[100100]; char s[10]; while (scanf("%d",&N)!=EOF) { for (int i = 0 ; i < N ; i +原创 2012-03-19 10:06:31 · 558 阅读 · 0 评论 -
poj 2487 排序题
题意:也是个排序题,降序排序后,从头往后加,满足条件跳出就行。 #include #include int cmp(int a,int b) { if (a>b) return 1; return 0; } using namespace std; int a[1000010]; int main() { int T; scanf("%d",&T);原创 2012-03-19 10:10:03 · 619 阅读 · 0 评论 -
poj 2363 blocks
题意:给出边长为1的立方体的体积,对其进行包装,求出组合出最小的表面积。 思路:原来在heu做过,三重循环肯定超时,两重循环也有个优化,表面积 = 2*(a*b+a*c*b*c); 当a b c 最接近的时候(a=b=c),也就是立方体的时候是最小的表面积,所以对两个边循环的时候,可以先把V开三次方并向上取整,然后向两边枚举边长。 #include #include using namesp原创 2012-03-19 09:54:01 · 434 阅读 · 0 评论 -
poj 2366 直接寻址法
题意:有两个集合A , B 从A B 两个集合中各找出一个数字,看其和等不等于 10000. 思路:直接寻址法 自己枚举超时啊。。。 就是把第一个集合的位置确定,然后枚举第二个集合的数,每枚举一个数就能确定这个数字是不是满足条件,这样一个数字就不需要重复枚举多次。。。 原文地址 在依然博客里 POJ 基础题里。 依然的博客在我主页上有链接。 #include using namespac原创 2012-03-19 09:58:26 · 520 阅读 · 0 评论 -
poj 2612 扫雷 模拟
题意:开始输出雷的分布,然后输出操作,X代表点在这个区域上,分为两种情况,如果没有踩到雷,那么输出这个地方周围雷的个数,没有操作的点输出“.”,踩到雷的话,把所有雷的地方输出“*”,然后操作的地方输出周围雷的个数。 挺容易的,但是WA了 半天。。。后来还是看了依然的报告,写的很简洁~ o(︶︿︶)o 唉。。差距 #include using namespace std; int dir[8][原创 2012-03-19 10:14:04 · 769 阅读 · 0 评论 -
poj 3300 前后轮
认真读题,按照他的意思搞出来就行。。。英语啊。。。重要~ #include #include using namespace std; double cmp(double a,double b) { if (a < b) return 1.0; return 0.0; } int main() { double f[100],r[100]; double原创 2012-03-19 10:20:28 · 479 阅读 · 0 评论 -
acdream 1124 BFS + 简单DP
题意:从左上角走到右下角的所有方案,之允许走right 和 down 的话,如果可以走到那么输出path数,如果不能走到,那么加上允许走left 和 up看是否可以走到右下角,如果能的话输出“THE GAME IS A LIE”,如果还不能走到输出“ INCONCEIVABLE”。 #include #include #include #include using namespace std原创 2012-04-07 11:16:15 · 395 阅读 · 0 评论 -
hdu 1006 时钟求交集
题意:给出一个角度,然后求一天中时针、分针、秒针互相的夹角都大于等于这个夹角的概率。。 思路:开始的思路就是枚举,但是由于精度问题,果断TLE、、、 膜拜网上各种解法啊,主要就是个数学问题、、但是真心不会啊,这道题学到一些,处理时钟问题的方法吧,还有区间求交集什么的。。。 http://blog.csdn.net/lulipeng_cpp/article/details/7320710 O原创 2012-10-30 21:35:21 · 2236 阅读 · 1 评论 -
poj 3750 小孩儿报数问题
题意:很清晰的约瑟夫,自己写了半天的循环链表一直WA,案例可以过,可能是没有处理好特殊情况,改了半天也是WA,无奈只有搜解题。。。 因为是昨天弄的,解题报告的地址找不到了,要是在百度搜,应该也可以找到。狠狠鄙视,鄙视自己的链表!我看他这种方法非常好,有种打表的感觉,不忍独享,还是贴出来了。 #include using namespace std; struct node { char原创 2012-03-18 08:50:43 · 688 阅读 · 0 评论 -
poj 1068 括号匹配
题意:p序列代表当前右括号的坐标有多少左括号,w序列代表了当前右括号和它匹配的左括号之间有多少个右括号(包括当前右括号) 思路:找到右括号的位置,模拟匹配过程。 #include using namespace std; int main() { int p[30],w[30],s[60];//s是括号序列 0代表"(" 1代表")" bool flag[60];原创 2012-03-18 08:35:05 · 690 阅读 · 0 评论 -
hdu 4112 2011 ACM成都现场赛B
做完这道题让我深刻理解了log的使用,尽管我没有用它来写,把边长除以二再除以二一直除到一为止,就相当于log(2 底 边长). #include #include using namespace std; int main() { int t; __int64 a,b,c,hand,knife,v; scanf("%d",&t); for(int i=1;i<=t原创 2012-01-18 11:03:16 · 1375 阅读 · 0 评论 -
poj 1247 暴力
题意:一个环上有数字,一个人在环头,一人在环尾,分别顺时针和逆时针走,如果能把环的数字和平分,分别输出两个人所在的位置。直接暴力水过。 #include using namespace std; int main() { int a[35]; int N; int sum1,sum2,sum; int i,j; while(scanf("%d",&N)!=EOF) {原创 2012-02-01 11:56:03 · 783 阅读 · 0 评论 -
codeforces 105 div2 A
A. Insomnia cure time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output «One dragon. Two dragon. Three dragon», —原创 2012-02-03 09:42:09 · 626 阅读 · 0 评论 -
codeforces 105 div2 B
B. Escape time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output The princess is going to escape the dragon's cave原创 2012-02-03 10:42:56 · 466 阅读 · 0 评论 -
poj 3427 模拟
题意:输入N(N棵树),L(只能伐长度是L的数目),然后输入N棵树的高度。 枚举等待的年数,0到L-1 到L和0应该是一样的,然后把每年剩下的浪费的树的长度加起来,最后求出浪费最少的树木的等待年数。 #include using namespace std; int main() { int a[30010],b[30010],L,N,i,j; while(scanf("%d%d",原创 2012-02-08 21:52:06 · 491 阅读 · 0 评论 -
poj 1552
题意:统计给出的数中有多少个数能够整除其它的某个数字,并且商是2 #include using namespace std; int main() { int a[20],t,len,sum,i,j; scanf("%d",&a[0]); while(a[0]!=-1) { for(i=1;a[i-1]!=0;i++) scanf("%d",&a[i]);原创 2012-02-09 14:17:56 · 518 阅读 · 0 评论 -
poj 1056 判断前缀
题意:输入一些二进制编码,判断是否有是其它编码前缀的编码,如果有则输出...not...。没有则可编码。每组输入数据以9为结束标志。 #include using namespace std; int main() { char str[15][15]; int i=0,h=1,j,k,len1,len2,flag=0; while(scanf("%s",str[i++])!=E原创 2012-02-09 15:21:05 · 1256 阅读 · 0 评论 -
poj 2109 注意double 范围
题意:求满足k^n=p的 整数K,double 数据范围10^300 直接用double水过 #include #include using namespace std; int main() { double n,p,k; while(scanf("%lf%lf",&n,&p)!=EOF) //cout<<pow(p,1/n)<<endl; printf("%.lf\n"原创 2012-02-10 17:42:52 · 394 阅读 · 0 评论 -
poj 2159 字母映射
题意:原来字母变换不一定只是加一,排列也不一定是按照案例来的。。。被虐了。。。 思路:只要统计出两个字符串中字符的个数,然后用一次排序,来看是否满足映射关系就可以。 例如统计个数的数组a,b应该是 0,1 1,0 0,0 0,2 2,0 ... 这样就是如果右边的原始字符数组是加一变换的话,坐标的数组统计的个数就会相应的下移一格。。。加二,加三依次类推,所以用一次快排,然后比较即原创 2012-02-27 12:43:10 · 392 阅读 · 0 评论 -
hdu 1568 求斐波数的前四位
hdu 1568 (log取对数 / Fib数通项公式) 2007年到来了。经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列 (f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i>=2))的值全部给背了下来。 接下来,CodeStar决定要考考他,于是每问他一个数字,他就要把答案说出来,不过有的数字太长转载 2013-05-07 18:09:46 · 786 阅读 · 0 评论