HDU 5918 Sequence I KMP
Sequence I
Each test case contains three lines.
The first line contains three space-separated integers 1≤n≤106,1≤m≤106 and 1≤p≤106.
The second line contains n integers a1,a2,⋯,an(1≤ai≤109).
the third line contains m integers b1,b2,⋯,bm(1≤bi≤109).
6 3 1
1 2 3 1 2 3
1 2 3
6 3 2
1 3 2 2 3 1
1 2 3
Case #2: 1
题意:
给你a,b两个序列
和一个p ,求有多少个 q恰好满足 b1,b2,b3....bm 就是 a[q],a[q+p],a[q+2p]......a[q+(m-1)p];
题解:
将a序列,每隔p位置分成一组,这样最多有p组,个数和是n
将每组和b序列跑KMP计算答案
- #include<bits/stdc++.h>
- using namespace std;
- #pragma comment(linker, "/STACK:102400000,102400000")
- #define ls i<<1
- #define rs ls | 1
- #define mid ((ll+rr)>>1)
- #define pii pair<int,int>
- #define MP make_pair
- typedef long long LL;
- const long long INF = 1e18;
- const double Pi = acos(-1.0);
- const int N = 1e6+, M = 1e6, mod = 1e9+, inf = 2e9;
- int T,n,m,p,s[N],t[N],ans = ;
- vector<int > P[N];
- int nex[N];
- int main()
- {
- int cas = ;
- scanf("%d",&T);
- while(T--)
- {
- scanf("%d%d%d",&n,&m,&p);
- for(int i = ; i <= n; ++i) scanf("%d",&t[i]);
- for(int i = ; i <= m; ++i) scanf("%d",&s[i]);
- for(int i = ; i < p; ++i) P[i].clear();
- memset(nex,,sizeof(nex));
- ans = ;
- int k = ;
- for(int i=; i<=m; i++)
- {
- while(k>&&s[k+]!=s[i]) k = nex[k];
- if(s[k+]==s[i])k++;
- nex[i] = k;
- }
- if(p == )
- {
- k = ;
- for(int i=; i<=n; i++)
- {
- while(k>&&s[k+]!=t[i]) k = nex[k];
- if(s[k+]==t[i]) k++;
- if(k==m) {
- k = nex[k];
- ans++;
- }
- }
- printf("Case #%d: ",cas++);
- printf("%d\n",ans);
- }
- else {
- for(int i = ; i <= n; ++i)
- P[i % p].push_back(t[i]);
- for(int i = ; i < p; ++i) {
- k = ;
- for(int j = ; j < P[i].size(); ++j) {
- while(k>&&s[k+]!=P[i][j]) k = nex[k];
- if(s[k+]==P[i][j]) k++;
- if(k==m) {
- k = nex[k];
- ans++;
- }
- }
- }
- printf("Case #%d: ",cas++);
- printf("%d\n",ans);
- }
- }
- }
HDU 5918 Sequence I KMP的更多相关文章
- HDU 1711Number Sequence【KMP模板题】
<题目链接> 题目大意: 意思是给出两个串,找出匹配串在模式串中的位置. 解题分析: KMP算法模板题. #include <cstdio> #include <cstr ...
- HDU 5918 Sequence I
题目来源:2016 CCPC 长春站 题意:给出两个序列 a[] , b[] ,如果b1,b2....bm能够与aq,aq+p,aq+2p...aq+(m-1)p对应( q+(m-1)p<=n ...
- HDU 3397 Sequence operation(线段树)
HDU 3397 Sequence operation 题目链接 题意:给定一个01序列,有5种操作 0 a b [a.b]区间置为0 1 a b [a,b]区间置为1 2 a b [a,b]区间0变 ...
- hdu 5510 Bazinga(字符串kmp)
Bazinga Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- 【hdu 5918】Sequence I(KMP)
给定两个数字序列,求a序列中每隔p个构成的p+1个序列中共能匹配多少个b序列. 例如1 1 2 2 3 3 每隔1个的序列有两个1 2 3 kmp,匹配时每次主串往前p个,枚举1到p为起点. 题目 # ...
- HDU 1711 Number Sequence (KMP简单题)
Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 1711 Number Sequence 【KMP应用 求成功匹配子串的最小下标】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/5000 MS (Java/O ...
- HDU - 1711 A - Number Sequence(kmp
HDU - 1711 A - Number Sequence Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1 ...
- HDU 1711 Number Sequence(KMP)附带KMP的详解
题目代号:HDU 1711 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/ ...
随机推荐
- struts2 复杂参数封装
1.1.1 Struts2中封装复杂类型的数据: 封装到List集合: 页面: 商品名称:<input type="text" name="products[ ...
- Appium+Robotframework实现Android应用的自动化测试-2:Windows中启动Appium和模拟器
一.启动Appium 安装好了之后,在桌面或者菜单中找到Appium,分别双击或点击打开Appium.exe,如果一切正常,接着会出现一个Appium启动后的界面窗口,如下图所示. 1.1 Andro ...
- volley post非json格式数据并获取json数据
在使用JsonObjectRequest时无法post非json格式的数据,因而采用StringRequest获取到相应的数据后再转为json格式的数据. //这里的上下文需要讨论 private s ...
- centos6.5 tomcat开机启动
可参考:centos6.5 nginx开机启动 /etc/init.d/下添加tomcatd文件,内容如下: #!/bin/sh # # chkconfig: - # # Licensed to th ...
- zpf 获取表单等数据的用法
2015年4月12日 12:25:35 星期日 zpf框架中获取表单数据的方法 //获得get,post,url中的数据 private function setData() { $this-> ...
- 配置IIS,Apache,PHP过程中遇到的一些问题
下载了eclipse的最新版本,并且添加了PHP插件.为了支持多语言,决定采用UTF-8编码.但是在开发的过程中,发现代码的自动提示帮助信息显示的是乱码,PHP源文件及注释,均正常.在网上查了很多资料 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- iOS 没有安装对应客户端,不应显示对应的图标
现在很多APP为了让用户更加快捷方便注册,都会使用第三方进行登录,例如QQ/微信/淘宝等.但是上线审核被拒,大致会出现以下内容: Additionally, we found that your ap ...
- iOS 发送请求时获取cookie
Cookie: 记录者用户信息的保存在本地的用户数据,如果有会被自动附上 值得一提的是,在iOS中当你发送一个任意请求时,不管你愿不愿意,NSURLRequest都会自动帮你记录你所访问的URL上设置 ...
- IOS - 内购
内购的五种产品类别 •非消耗品(Nonconsumable)买了就有,头衔,功能 –指的是在游戏中一次性购买并拥有永久访问权的物品或服务.非消耗品物品可以被用户再次下载,并且能够在用户的所有设备上使用 ...