Codeforces-Round 394#C-Dasha and Password'
2017-02-01 10:41
471 查看
class KMP{ int maxn=100050; int[] Next=new int[maxn]; void kmp_pre(String x, int len1, int Next[]) { int i, j; j = Next[0] = -1; i = 0; while (i < len1) { while (-1 != j && x.charAt(i) != x.charAt(j)) j = Next[j]; Next[++i] = ++j; } } long KMP_Count(String x, int len1, String y, int len2) { int i, j; long ans = 0; kmp_pre(x, len1, Next); i = j = 0; while (i < len2) { //匹配完的前缀下标为0~j-1 长度为j while (-1 != j && y.charAt(i) != x.charAt(j)) { j = Next[j]; } i++; j++; if (j >= len1) { j = Next[j]; } } /*while(j!=-1){ j=Next[j]; } 如果还有为匹配完的前缀*/ return ans; } } class EXKMP{ int maxn=100050; int[] Next=new int[maxn]; int[] ex=new int[maxn]; //ex[i] T串从i到tlen-1 这一段中和S串具有的最长公共前缀的长度; void kmp(String P){ int m=P.length(); Next[0]=m; int j=0,k=1; while(j+1<m&&P.charAt(j)==P.charAt(j+1)) j++; Next[1]=j; for(int i=2; i<m; i++){ int p=Next[k]+k-1; int L=Next[i-k]; if(i+L<p+1) Next[i]=L; else{ j=Math.max(0,p-i+1); while(i+j<m&&P.charAt(i+j)==P.charAt(j)) j++; Next[i]=j; k=i; } } } void exkmp(String P,String T){ int m=P.length(); int n=T.length(); kmp(P); int j=0,k=0; while(j<n&&j<m&&P.charAt(j)==T.charAt(j)) j++; ex[0]=j; for(int i=1; i<n; i++){ int p=ex[k]+k-1; int L=Next[i-k]; if(i+L<p+1) ex[i]=L; else { j=Math.max(0,p-i+1); while(i+j<n&&j<m&&T.charAt(i+j)==P.charAt(j)) j++; ex[i]=j; k=i; } } } }
相关文章推荐
- Codeforces-Round 394#A-Dasha and Stairs
- Codeforces-Round 394#B-Dasha and friends
- Codeforces 761C-Dasha and Password
- Codeforces Round #394 (Div. 2)C. Dasha and Password【暴力】
- 【codeforces 761C】Dasha and Password(贪心+枚举做法)
- 【codeforces 761C】Dasha and Password(动态规划做法)
- Codeforces Round #394 (Div. 2) C.Dasha and Password(暴力)
- Codeforces Round #425 (Div. 2) Problem D Misha, Grisha and Underground (Codeforces 832D) - 树链剖分 - 树状数组
- Codeforces 761A-Dasha and Stairs
- Codeforces Round #179 (Div. 2) B (codeforces 296b) Yaroslav and Two Strings
- codeforces 761D - Dasha and Very Difficult Problem
- C. Dasha and Password
- Codeforces 761B-Dasha and friends
- C. Dasha and Password-C. Dasha and Password-暴力|dp思想
- [二分图匹配 线段树] Codeforces 573D Round #318 [RussianCodeCup Thanks-Round] (Div. 1) D. Bear and Cavalry
- codeforces 753 A. Dasha and Stairs
- codeforces 30E 蓝桥杯 Tricky and Clever Password
- Codeforces Round #394 (Div. 2)(A. Dasha and Stairs,B. Dasha and friends,C. Dasha and Password)
- Codeforces Round #394(Div. 2)B. Dasha and friends【思维+暴力】
- Codeforces 761D-Dasha and Very Difficult Problem