Codeforces 448B Suffix Structures
2014-07-18 10:51
274 查看
如果t是s的子串 输出"automaton"
如果t和s字母相同但是位置不同 输出"array"
如果t交换位置可以得到s的子串 输出"both"
其他情况无法操作 输出"need tree"
如果t和s字母相同但是位置不同 输出"array"
如果t交换位置可以得到s的子串 输出"both"
其他情况无法操作 输出"need tree"
#include<bits/stdc++.h> using namespace std; int a1[120],a2[120]; int dp[120][120]; int main() { char s[120],t[120]; scanf("%s%s",s,t); int len1=strlen(s),len2=strlen(t); int ans=0,flag=0; for(int i=1;i<=len1;i++) { for(int j=1;j<=len2;j++) { if(s[i-1]==t[j-1]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); } } if(dp[len1][len2]==len2) ans=1; if(ans!=1) { for(int i=0;i<len1;i++) a1[s[i]-'a']++; for(int i=0;i<len2;i++) a2[t[i]-'a']++; flag=0; for(int i=0;i<26;i++) { if(a1[i]<a2[i]) { flag=1; break; } else if(a1[i]>a2[i]) flag=2; } if(flag==1) ans=2; else if(flag==2) ans=3; else if(flag==0) ans=4; } if(ans==1) printf("automaton\n"); else if(ans==2) printf("need tree\n"); else if(ans==3) printf("both\n"); else printf("array\n"); return 0; }
相关文章推荐
- codeforces 417B - Crash
- Codeforces 274A k-Multiple Free Set
- Codeforces 249D Donkey and Stars (线段树+扫描线)
- 【codeforces】Codeforces Round #366 (Div. 2)
- codeforces 805A - Fake NP
- codeforces 868D 分治哈希
- Codeforces 417C Football(构造)
- codeforces 482 B Interesting Array <STL map 的运用>
- codeforces 6E. Exposition(RMQ + 二分)
- CodeForces 550C Divisibility by Eight (规律,暴力)
- codeforces 797B Odd sum
- 【CodeForces】 652B
- CodeForces 248B Chilly Willy
- Codeforces 156D Clues (图论, 并查集, 卡特兰数)
- 【codeforces】-#621-AWet Shark and Odd and Even(n个数最大偶数和)
- Codeforces 278C Learning Languages【并查集】水题
- CodeForces - 808F Card Game (随机化大法)
- Codeforces 851D Arpa and a list of numbers
- CodeForces 275C k-Multiple Free Set
- CodeForces 496C 字符串阵处理