HDU 4749 && POJ 3167 KMP
来源:互联网 发布:php源码包下载地址 编辑:程序博客网 时间:2024/05/20 19:31
RT
这个题是POJ3167的修改版,基本一致
#include <map>#include <set>#include <queue>#include <stack>#include <cmath>#include <cstdio>#include <vector>#include <string>#include <cstring>#include <iostream>#include <algorithm>#include <functional>using namespace std;const int N = 100005; int x[N], a[N], nex[N]; int pr1[N][30], pr2[N][30], n, m, s; void init() { memset(pr1, 0, sizeof(pr1)); memset(pr2, 0, sizeof(pr2)); pr1[1][x[1]] = pr2[1][a[1]] = 1; for(int i = 2; i <= n; i++) { memcpy(pr1[i], pr1[i-1], sizeof(pr1[0])); pr1[i][x[i]]++; } for(int i = 2; i <= m; i++) { memcpy(pr2[i], pr2[i-1], sizeof(pr2[0])); pr2[i][a[i]]++; }}void getnex() { memset(nex, 0, sizeof(nex)); int i = 1, j = 0, k, si, sj, ei, ej; nex[1] = 0; while(i <= m) { si = sj = ei = ej = 0; for(k = 1; k < a[i]; k++) si += pr2[i][k]-pr2[i-j][k]; ei = pr2[i][k]-pr2[i-j][k]; for(k = 1; k < a[j]; k++) sj += pr2[j][k]; ej = pr2[j][k]; if(j == 0||(si == sj&&ei == ej)) i++, j++, nex[i] = j; else j = nex[j]; }}void gao() { int i, j, k, si, sj, ei, ej, pre = -1, num = 0; for(i = j = 1; i <= n; ) { si = sj = ei = ej = 0; for(k = 1; k < x[i]; k++) si += pr1[i][k]-pr1[i-j][k]; ei = pr1[i][k]-pr1[i-j][k]; for(k = 1; k < a[j]; k++) sj += pr2[j][k]; ej = pr2[j][k]; if(j == 0||(si == sj&&ei == ej)) i++, j++; else j = nex[j]; if(j == m+1) { if (i - 1 - m >= pre) { num ++; pre = i - 1; } j = nex[j]; } } printf("%d\n", num); }int main() { while(scanf("%d%d%d", &n, &m, &s) != EOF) { for(int i = 1; i <= n; i++) scanf("%d", &x[i]); for(int i = 1; i <= m; i++) scanf("%d", &a[i]); init(); getnex(); gao(); } return 0; }
- HDU 4749 && POJ 3167 KMP
- HDU 4749 & POJ 3167 kmp变形
- Poj 3167 Cow Patterns Hdu 4749 Parade Show (KMP大小关系相同匹配+树状数组)
- kmp poj 3167
- POJ 1961 HDU 1358 KMP的性质
- POJ 3461 HDU 1686 赤果果的KMP
- poj 1226|| hdu 1238 Substrings(KMP)
- Oulipo (poj 3461&&hdu 1686) KMP
- Period (poj 1961&&hdu 1358)KMP
- HDU 2087 / POJ 3461 KMP拓展
- POJ 1961 && HDU 1358 Period(kmp)
- POJ 3461 && HDU 1686 Oulipo(kmp)
- POJ 1226 && HDU 1238 Substrings(kmp)
- 字符串 KMP HDU 4749
- HDU 4749 KMP... 算是KMP 吧。。。
- poj 3167 KMP好题
- poj 3167 Cow Patterns kmp
- hdu 4749 Parade Show ( kmp )
- c语言之猴子选大王
- 【初学】Objective-C学习笔记-献给我们敬爱的Hello World!
- 成都网预
- C++ boost::asio::serial_port 串口通信类 使用 封装 [大三四八九月实习]
- UVa 10035 Primary Arithmetic (陷阱较多~)
- HDU 4749 && POJ 3167 KMP
- 武汉公积金新政10日起实行 四种算法取最低值(zz)
- Linux的多任务编程-线程
- 多任务程序看门狗设计
- HDU 4750 && HDU 3938 离线并查集
- C#
- 杭州网预
- hdu 4750 Count The Pairs 并查集+离线
- 分数拆分 nyist66