【37.68%】【hdu 5918】Sequence I

Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 706 Accepted Submission(s): 266

Problem Description
Mr. Frog has two sequences a1,a2,⋯,an and b1,b2,⋯,bm and a number p. He wants to know the number of positions q such that sequence b1,b2,⋯,bm is exactly the sequence aq,aq+p,aq+2p,⋯,aq+(m−1)p where q+(m−1)p≤n and q≥1.

Input
The first line contains only one integer T≤100, which indicates the number of test cases.

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).

Output
For each test case, output one line “Case #x: y”, where x is the case number (starting from 1) and y is the number of valid q’s.

Sample Input
2
6 3 1
1 2 3 1 2 3
1 2 3
6 3 2
1 3 2 2 3 1
1 2 3

Sample Output
Case #1: 2
Case #2: 1

Source
2016中国大学生程序设计竞赛(长春)-重现赛

【题解】

意思是让你在
a1,a1+p,a1+2p,a1+3p…
a2,a2+p,a2+2p,a2 + 3p..
a3,a3+p,a3+2p,a3 +3p

ap,ap+p,ap+2p,ap+3p..
(a右边的东西都是下标;)
这p个序列里面找b数组的匹配数目;
用vector类处理出这个p个数列就好。
剩下的用KMP算法解决。
找完一个匹配之后,j==m。
这个时候让j= f[j];
就能继续找匹配了。
记住就好。不然每次都想好烦。

#include <cstdio>
#include <iostream>
#include <vector>const int MAXN = 2e6;
const int MAXM = 2e6;using namespace std;int p;
vector <int> a[MAXN];
int b[MAXM];
int f[MAXM],ans,n,m;void input(int &r)
{int t = getchar();while (!isdigit(t)) t = getchar();r = 0;while (isdigit(t)) r = r * 10+t-'0', t = getchar();
}int main()
{//freopen("F:\\rush.txt", "r", stdin);int t;input(t);for (int q = 1; q <= t; q++){for (int i = 0; i <= 1000000; i++)//a[0]也要clear!a[i].clear();ans = 0;input(n); input(m); input(p);for (int i = 1; i <= n; i++){int x;input(x);a[(i%p)].push_back(x);}for (int j = 0; j <= m - 1; j++)input(b[j]);f[0] = 0; f[1] = 0;for (int i = 1; i <= m - 1; i++)//获取失配函数,b数组下表是从0开始的。{int j = f[i];while (j && b[j] != b[i]) j = f[j];f[i + 1] = b[j] == b[i] ? j + 1 : 0;}for (int i = 0; i <= p - 1; i++)//给p个数列找匹配数目{int j = 0, len = a[i].size();for (int k = 0; k <= len - 1; k++){while (j && a[i][k] != b[j]) j = f[j];if (a[i][k] == b[j])j++;if (j == m){ans++;j = f[j];}}}printf("Case #%d: %d\n", q, ans);}return 0;
}

转载于:https://www.cnblogs.com/AWCXV/p/7632169.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WordPress的body_class()函数详解

https://www.cnblogs.com/xcxc/p/3658903.html WordPress的body_class()函数详解 wordpress的body_class()函数&#xff0c;顾名思义&#xff0c;这个函数根据不同的页面类型为body标签生成class选择器&#xff0c;从而让设计人员可以各方便灵活的控制不同页面中的各个元素。本…

表达式求值及转换算法

2019独角兽企业重金招聘Python工程师标准>>> 后缀表达式求值算法 stack operands; //运算数栈 while(没到表达式尾) {scanf("一个运算对象op");if(op is 运算数)operands.push(op);else if(op is 运算符){operand_right operands.pop();operand_left o…

2017-10-06-构建之法:现代软件工程-阅读笔记

单元测试&#xff1a; 常见单元测试的核心步骤&#xff1a;设置数据&#xff0c;使用被测试类型的功能&#xff0c;比较实际结果和预期的结果 好的单元测试的标准&#xff1a; 应在最基本的功能、参数上验证程序的正确性 应由程序的作者写 测试完毕后机器状态保持不变 要快 独立…

Use Selenium webdriver in Javascript

目标 分别用Firefox和Chrome打开google主页&#xff0c;输入selenium进行搜索&#xff0c;3秒后&#xff0c;再输入nodejs进行搜索。 环境需求 1. javascript运行平台&#xff1a;nodejs2. node module: selenium-webdriver在命令行中运行npm -g install selenium-webdriv…

关东升的iOS实战系列图书 《iOS实战:传感器卷(Swift版)》已经上市

&#xfeff;&#xfeff;承蒙广大读者的厚爱我的 《iOS实战&#xff1a;传感器卷&#xff08;Swift版&#xff09;》京东上市了&#xff0c;欢迎广大读者提出宝贵意见。http://item.jd.com/11760248.html 欢迎关注关东升新浪微博tony_关东升。 关注智捷课堂微信公共平台&#…

带分页的标签

原型图 图片.png重要的实现代码 var getMemo function(pageNo,name){$(#dataDiv).html("");$.ajax({url: basePath "/signIn/set/getSignSetListPage",datatype: json,type: "POST",data: { "pageNo": pageNo,"name":name…

jquery复选框 选中事件 及其判断是否被选中_常用笔记

checkbox的change事件可监听是否选中状态&#xff0c;也可添加onclick事件。var dom$(.checkbox);1. 判断checkbox是否被选中 var dom$(.checkbox);dom.prop(checked); //实现控制checkbox是否选中状态: 切换到初始状态  if (!(dom.prop(checked))) {   dom.prop(c…

线段树hdu1754

#include<iostream>#include<stdio.h>using namespace std;const int maxa200005;int val[maxa];struct tree{int max, left, right;}tree[maxa*3]; int create(int root,int left,int right) //root的*2和*21分别存root的前后部分{ tree[root].leftleft; tree[roo…

Apache2 部署flask项目

Apache2 部署flask项目 需要安装的插件&#xff1a; apt-get install apache2 apt-get install libapache2-mod-wsgi 在 /etc/apache2/sites-available/ 目录下创建对应的项目配置文件“xxx.conf”&#xff0c;用于项目与Apache2之间的链接(配置文件名自定义)&#xff1a;…

显示中文

开机点击“开始菜单”-->”首选项“-->”Raspberry Pi Configuration“-->”Localisation“下设置中文及本地时间。 树莓派默认是采用英文字库的&#xff0c;而且系统里没有预装中文字库&#xff0c;所以即使你在locale中改成中文&#xff0c;也不会显示中文&#xff…

[iOS Animation]-CALayer 性能优化实例

2019独角兽企业重金招聘Python工程师标准>>> 一个可用的案例 现在我们已经对Instruments中动画性能工具非常熟悉了&#xff0c;那么可以用它在现实中解决一些实际问题。 我们创建一个简单的显示模拟联系人姓名和头像列表的应用。注意即使把头像图片存在应用本地&…

【More Effective C++】Item 6

Item 6&#xff1a;区别Increment和Decrement操作符的前置&#xff08;prefix&#xff09;和后置&#xff08;postfix&#xff09;形式  前置和后置的区别主要在于函数参数不一样&#xff0c;后置形式中多了一个int型的参数&#xff0c;在后置形式被调用时&#xff0c;编译器…

WordPress 多语言支持(本地化)

https://www.cnblogs.com/ryanzheng/p/8309261.html WordPress 多语言支持&#xff08;本地化&#xff09; 本博客将介绍WordPress的多语言制作 首先需要在wp-content目录下创建一个languages文件夹&#xff0c;用于存放语言包文件。 然后在模板目录下的functions.php&…

timestamp与timedelta,管理信息系统概念与基础

将字符串‘2017年10月9日星期一9时10分0秒 UTC8:00’转换为timestamp。100天前是几号?今年还有多少天&#xff1f;管理有不同层次所需信息各有什么特点?管理信息系统从层次上可分为哪几类&#xff1f;数据处理经历了哪些阶段&#xff1f;各有什么特点&#xff1f;什么是web&a…

ZooKeeper1 利用虚拟机搭建自己的ZooKeeper集群

前言: 前段时间自己参考网上的文章&#xff0c;梳理了一下基于分布式环境部署的业务系统在解决数据一致性问题上的方案&#xff0c;其中有一个方案是使用ZooKeeper&#xff0c;加之在大数据处理中&#xff0c;ZooKeeper确实起到协调服务的作用&#xff0c;所以利用周末休息时间…

公共的Controler,是给非授权的用户访问

issue: 我使用的环境是Vs2012 , 创建了MVC4的工程&#xff0c;然后在工程里面Webconfig, 添加了访问限制 <authentication mode"Forms"> <forms loginUrl"~/Account/Login" timeout"2880" /> </authentication> <…

替换更改登陆页面logo与链接

//替换更改登陆页面logo与链接 function custom_loginlogo() {echo<style type"text/css"> h1 a {background-image: url(.get_bloginfo(template_directory)./logo.png) !important; } </style>;}add_action(login_head, custom_loginlogo); 注: 在主题…

es6关于let和const的总结

set用于声明变量 1.var 的一个升级版 2.不存在变量提升 console.log(a);//Uncaught ReferenceError: a is not definedlet a1;console.log(a);//1 console.log(a);//undefinedvar a1;console.log(a);//1 3.会形成暂时性死区&#xff08;处于同一个块级作用域里的同名变量在let声…

解决SublimeCodeIntel回车换行误打代码

SublimeCodeIntel会自动匹配并联想词汇, 这在换行的时候非常麻烦, 每次点Enter 都会误打出代码, 解决办法分两步:第一步是在Perferences/setting User 中加入 "auto_complete_commit_on_tab": true, 然后看Perferences/KeyBindings Default中 { "keys": [&…

【转】测试过程管理案例6---如何做项目的测试经理?

帖子地址&#xff1a; http://bbs.testage.net/viewthread.php?tid4588&pid184557&page1&extrapage%3D1#pid184557 案例描述&#xff1a; 简单叙述一下我遇到的问题吧&#xff1a; 公司其它部门有个项目&#xff0c;需要做很严格的测试&#xff0c;请求我们部门支…