成长轨迹46 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2804:词典】
2012-02-12 11:33
417 查看
http://poj.grids.cn/practice/2804
因为数据比较大,很容易tle
要ac起码就得将二分查找使出来
先做快排,然后进行二分查找
二分查找似乎也有stl函数:char p *= (dic *)bsearch(buf, dict, 100050 , sizeof(dict[0]), b_cmp);
【Time Limit Exceeded代码】
//因为数据比较大,很容易tle
【ac代码】
因为数据比较大,很容易tle
要ac起码就得将二分查找使出来
先做快排,然后进行二分查找
二分查找似乎也有stl函数:char p *= (dic *)bsearch(buf, dict, 100050 , sizeof(dict[0]), b_cmp);
【Time Limit Exceeded代码】
//因为数据比较大,很容易tle
//因为数据比较大,很容易tle #include <stdio.h> #include <string.h> #include <ctype.h> #include <cmath> char buf[100050][12]; char en[100050][12],fr[100050][12]; int main() { int i; for(i=0;;i++) { memset(en[i],0,sizeof(en[i])); memset(fr[i],0,sizeof(fr[i])); en[i][0]=getchar(); if(en[i][0]=='\n') { break; } for(int j=1;;j++) { en[i][j]=getchar(); if(en[i][j]==' ') break; } scanf("%s",fr[i]); getchar(); } for(int k=0;scanf("%s",buf[k])!=EOF;k++) { int j; for(j=0;j<i;j++) { if(strcmp(buf[k],fr[j])==0) { printf("%s\n",en[j]); break; } } if(j==i) printf("eh\n"); } return 0;}
【ac代码】
//要ac起码就得将二分查找使出来 //先做快排,然后进行二分查找 //二分查找似乎也有stl函数:char p *= (dic *)bsearch(buf, dict, 100050 , sizeof(dict[0]), b_cmp); //(变量是根据我的代码改的) //b_cmp函数详细可以看看http://blog.csdn.net/pirage/article/details/6958752 #include <stdio.h> #include <string.h> #include <ctype.h> #include <cmath> #include <stdlib.h> char buf[12]; struct dic { char en[12]; char fr[12]; }dict[100050]; int cmp(const void *a,const void *b) { return strcmp(((struct dic *)a)->fr,((struct dic *)b)->fr); } void mybsearch(char *s,int n) { int low=0; int hig=n-1; while(low<=hig) { int mid=(low+hig+1)/2;//【注意mid不是n/2】 int t=strcmp(s,dict[mid].fr); if(!t) { printf("%s\n",dict[mid].en); return ; } else if(t>0) { low=mid+1; } else { hig=mid-1; } } printf("eh\n"); } int main() { int i; for(i=0;;i++) { memset(dict[i].en,0,sizeof(dict[i].en)); memset(dict[i].fr,0,sizeof(dict[i].fr)); dict[i].en[0]=getchar(); if(dict[i].en[0]=='\n') { break; } for(int j=1;;j++) { dict[i].en[j]=getchar(); if(dict[i].en[j]==' ') break; } scanf("%s",dict[i].fr); getchar(); } qsort(dict,i,sizeof(dic),cmp); while(scanf("%s",buf)!=EOF) { mybsearch(buf,i); } return 0;}
相关文章推荐
- 成长轨迹44 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2799、2976、2975、2742】
- 成长轨迹50 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2974:487-3279】
- 成长轨迹45 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2797:最短前缀】
- 成长轨迹51 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2744:子串】
- 成长轨迹52 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2743:字符串判等】
- 成长轨迹47 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2820:古代密码】
- 成长轨迹48 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2818:密码】
- 成长轨迹49 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2819:W的密码】
- 成长轨迹56 【ACM算法之路 百炼poj.grids.cn】【简单枚举】【2811:熄灯问题】
- 成长轨迹59 【ACM算法之路 百炼poj.grids.cn】【递归】【2694:逆波兰表达式】
- 成长轨迹60 【ACM算法之路 百炼poj.grids.cn】【递归】【2756:二叉树】
- 成长轨迹61 【ACM算法之路 百炼poj.grids.cn】【动态规划】【2806、1661、2757】
- 成长轨迹53 【ACM算法之路 百炼poj.grids.cn】【简单枚举】【2747、2810、2692、2977】
- 成长轨迹57 【ACM算法之路 百炼poj.grids.cn】【递归】【2754、2816、2753、】
- 成长轨迹43 【ACM算法之路 百炼poj.grids.cn】【数值转换】【2765:八进制小数】
- 成长轨迹54 【ACM算法之路 百炼poj.grids.cn】【简单枚举】【2739:计算对数】
- 成长轨迹55 【ACM算法之路 百炼poj.grids.cn】【简单枚举】【2812:恼人的青蛙】
- 成长轨迹58 【ACM算法之路 百炼poj.grids.cn】【递归】【1664:放苹果】
- 成长轨迹42 【ACM算法之路 百炼poj.grids.cn】【数值转换】【2972、2798、2735、2734、2973】
- 嵌入式成长轨迹46 【Zigbee项目】【CC2430基础实验】【片内温度】