HDU
来源:互联网 发布:最新域名升级 编辑:程序博客网 时间:2024/06/06 05:54
感谢出题小哥,复习一下KMP
KMP 入门
#include<iostream>#include<algorithm>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<cmath>#include<set>#include<queue>#include<stack>#include<map>#define PI acos(-1.0)#define in freopen("in.txt", "r", stdin)#define out freopen("out.txt", "w", stdout)using namespace std;typedef long long ll;typedef unsigned long long ull;const int maxn = 1e6 + 7, maxd = 1e4 + 7, mod = 1e9 + 7;const ll INF = 0x7f7f7f7f;int n, m, flag;int t[maxn], s[maxd];int f[maxd];void init() { scanf("%d %d", &n, &m); for(int i = 0; i < n; ++i) scanf("%d", &t[i]); for(int i = 0; i < m; ++i) scanf("%d", &s[i]); f[0] = f[1] = 0; for(int i = 1; i < m; ++i) { int j = f[i]; while( j && s[i] != s[j]) j = f[j]; f[i+1] = ( s[i] == s[j] ? j+1 : 0); }}void solve() { int j = 0; for(int i = 0; i < n; ++i) { while(j && s[j] != t[i]) j = f[j]; if(s[j] == t[i]) ++j; if(j == m) { flag = 1; cout << i-m+2 << endl; return; } }}int main() { int T; scanf("%d", &T); while(T--) { init(); flag = 0; solve(); if(!flag) cout << -1 << endl; } return 0;}
阅读全文
1 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- 11.2第二节课
- reviewboard-腾讯企业邮箱邮件通知配置
- 字典排序问题加强版(java)
- 小程序登录步骤
- JAVA 将图片生成缩略图
- HDU
- IDES翻译—利用采购订单进行跨公司库存转储
- oracle用户被锁定the account is locked的解决办法
- DB2 of del
- Qt界面不自动刷新
- spring-data-redis 关于订阅客户端不断创建新线程的问题
- java中接口的向上转型。和多态性
- 树莓派安装mysql
- windbg抓取dump