hdu5414
2015-08-21 19:58
134 查看
这道题在原先的想法上经过一定的优化就可以过了,但是经过优化后,一直wr,经过一个多小时的抗争,终于明白sbn只要>=tbn就可以了,不一定要严格等于。(sbn,tbn的含义可在代码中找到)
参考来源:http://blog.csdn.net/wangcong9614/article/details/47809239
2015.8.29:
又再推了一遍,其实不难,关键是可能已经做过一遍了吧,希望下次可以装装的说:“这道题呀?虽然我没做过,但是简单,看一眼就成。”容我做会儿白日梦
。
原先的代码(超时):
过了的代码:
参考来源:http://blog.csdn.net/wangcong9614/article/details/47809239
2015.8.29:
又再推了一遍,其实不难,关键是可能已经做过一遍了吧,希望下次可以装装的说:“这道题呀?虽然我没做过,但是简单,看一眼就成。”容我做会儿白日梦
。
原先的代码(超时):
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; #define N 100010 #define M 26 #define INF 0x3f3f3f3f char s ; char t ; int loca[M]; int aloca[M]; int main(){ int cas; int win; scanf("%d\n",&cas); while(cas--){ scanf("%s",s); scanf("%s",t); memset(loca,-1,sizeof(loca)); for(int i=0;t[i]!='\0';i++){ int tempch=t[i]-'a'; if(loca[tempch]==-1){ loca[tempch]=i; } } for(int i=0;i<M;i++){ aloca[i]=INF; for(int j=0;j<M;j++){ if(j==i){ continue; } else{ if(loca[j]!=-1&&loca[j]<aloca[i]){ aloca[i]=loca[j]; } } } } //for(int i=0;i<M;i++){ // printf("%d\n",loca[i]); //} if(s[0]!=t[0]){ printf("No\n"); continue; } win=1; int i,j; for(i=1,j=1;t[j]!='\0'&&s[i]!='\0';j++){ if(s[i]==t[j]){ i++; continue; } else{ if(t[j]==s[i-1]){ int temp=t[j]-'a'; if(aloca[temp]>loca[temp]){ win=0; break; } } } } if(win==1){ if(t[j]=='\0'&&s[i]!='\0'){ win=0; } else if(t[j]!='\0'&&s[i]=='\0'){ for(;t[j]=='\0'||t[j]!=s[i-1];j++){ int tempch=s[i-1]-'a'; if(aloca[tempch]>loca[tempch]){ win=0; break; } } } } if(win==0){ printf("No\n"); } else{ printf("Yes\n"); } } return 0; }
过了的代码:
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; #define N 1000100 char sa ; char ta ; int main(){ int t; scanf("%d",&t); while(t--){ scanf("%s",sa); scanf("%s",ta); int i,j; for(i=0,j=0;sa[i]!='\0'&&ta[j]!='\0';j++){ if(sa[i]==ta[j]){ i++; } } if(sa[i]!='\0'){ printf("No\n"); } else{ char sb=sa[0]; char tb=ta[0]; int sbn=1; int tbn=1; for(int i=1;sa[i]!='\0';i++){ if(sa[i]==sa[i-1]){ sbn++; } else{ break; } } for(int i=1;ta[i]!='\0';i++){ if(ta[i]==ta[i-1]){ tbn++; } else{ break; } } if(sb==tb&&sbn>=tbn){ //printf("%d %d\n",sbn,tbn); printf("Yes\n"); } else{ printf("No\n"); } /*int flag=0; int j; for(j=1;ta[j]!='\0';j++) { if(ta[j]==ta[j-1]) continue; else break; } for(int i=0;i<j;i++) { if(sa[i]!=ta[0]) { flag=1; break; } } if(flag==1){ printf("No\n"); } else{ if(sbn<tbn||sa[0]!=ta[0]){ printf("%d\n",1/0); } printf("Yes\n"); }*/ } } return 0; }
相关文章推荐
- linux USB虚拟串口设备名的修改
- Tarena - Week02:面向对象 知识点总结
- hdu5414
- Android相关图书推荐
- 深入理解JavaScript系列(15):函数(Functions)
- C语言:将16进制字符串转化为int类型值
- hdu 2112 HDU Today
- hdu 5407 CRB and Candies(乘法逆元+快速幂)
- 美素数
- 2015 HUAS Summer Contest#5~C
- 深入理解JavaScript系列(14):作用域链(Scope Chain)
- 一个HexToInt的C/C++函数
- 用python做一个可以下载电影天堂最新电影的爬虫
- 新建Android项目时避免继承ActionBarActivity并去掉titleBar
- 按钮使用
- STM32学习日志--使用DMA功能自动更新PWM的输出
- 一个想背包优化的问题
- C语言相关图书推荐
- 友谊赛水题 二分
- ip,email,银行卡号匹配