poj3167
来源:互联网 发布:厦门博思软件 编辑:程序博客网 时间:2024/06/06 00:44
这道题看别人代码看了一天,我去……功夫不行啊!
#include <iostream>#include <stdio.h>#include <vector>#include <string.h>using namespace std;const int maxn=25010;int n,m,s;vector<int> ans;int sum[maxn];int next[maxn];int tot1[maxn],tot2[maxn];int a[100010],b[maxn];int query(int x){ int tmp=0; for(int i=1;i<=x;i++) tmp+=sum[i]; return tmp;}int main(){ scanf("%d%d%d",&n,&m,&s); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=m;i++) { scanf("%d",&b[i]); tot1[i]=query(b[i]-1); tot2[i]=query(b[i]); sum[b[i]]++; } memset(sum,0,sizeof sum); int j=0; for(int i=2;i<=m;i++) { while(j&&(tot1[j+1]!=query(b[i]-1) || tot2[j+1]!=query(b[i])))//while:清除sum部分值,直到j=0(匹配到第一个了)或匹配 { for(int k=i-j;k<i-next[j];k++)//(i-next[i]-(i-j))就是已经匹配的长度-1,-1是为了给下一段匹配留一个(形成匹配至少需要2个);i-j是这段匹配的开始 sum[b[k]]--; j=next[j]; } if(tot1[j+1]==query(b[i]-1) && tot2[j+1]==query(b[i])) j++;//如果匹配,j++ next[i]=j;//这个+1后的i=+1后的j,+1前的j或者是不+1的j是next[i-1] sum[b[i]]++;//读取b[i]了,对应的sum+1 } memset(sum,0,sizeof sum); j=0; for(int i=1;i<=n;i++) { while(j==m ||(j&& (tot1[j+1]!=query(a[i]-1) || tot2[j+1]!=query(a[i]))))//j==m说明成功匹配了一段,要清除sum部分值;直到匹配才结束while { for(int k=i-j;k<i-next[j];k++) sum[a[k]]--; j=next[j]; } if(tot1[j+1]==query(a[i]-1) && tot2[j+1]==query(a[i])) j++; if(j==m) ans.push_back(i-m+1); sum[a[i]]++; } printf("%d\n",ans.size()); int len=ans.size(); for(int i=0;i<len;i++) printf("%d\n",ans[i]);}
阅读全文
0 0
- poj3167
- poj3167
- POJ3167 KMP
- poj3167&hdu4749 KMP+BIT
- POJ3167 Cow Patterns (KMP)
- [kmp] POJ3167 Cow Patterns
- poj3167 Cow Patterns
- 【KMP】【poj3167】【bzoj1729】Cow Patterns
- poj3167 Cow Patterns KMP、树状数组
- 【KMP】【poj3167】【bzoj1729】Cow Patterns (kmp变形)
- 407. Trapping Rain Water II
- python爬虫实战--selenium验证码保存+多线程多标签+自动点击+完整代码
- android 四种启动模式
- 谷歌发布了一款AI工具 可以帮助基因组数据解读 | 速递
- 欢迎使用CSDN-markdown编辑器
- poj3167
- 科学家发现让人类幸福感飙升的密码!给大脑植入这个算法 | 精选
- Unity 导出 Facebook GameRoom
- java.lang.ThreadLocal 深入理解
- win 7 系统下 sublime 的 插件包安装(Install Package)解决 no package avaiable 问题
- AI英雄 | 对话Gregory:机器智能和人类智力的不同 就像飞机和鸟的区别
- 96-Unique Binary Search Trees
- stm32f1 的停止休眠时钟问题
- 业内 | 苹果在NIPS大会上展示了自动驾驶研究新进展