计蒜客 阿里天池的新任务—简单( KMP水 )
**链接:****传送门 **
思路:KMP模板题,直接生成 S 串,然后匹配一下 P 串在 S 串出现的次数,注意处理嵌套的情况即可,嵌套的情况即 S = "aaaaaa" ,P = "aa" P 串在S 串中出现了 5 次。
/*************************************************************************
> File Name: jsk02e2.cpp
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年05月21日 星期日 10时28分09秒
************************************************************************/
#include<bits/stdc++.h>
using namespace std;
const int MAX_N = 1000100;
char S[MAX_N] , P[MAX_N];
int W[MAX_N];
void init(int n,int a,int b,int L,int R){
W[0] = b;
for(int i = 1 ; i < n ; i++) W[i] = ( W[i-1] + a ) % n;
for(int i = 0 ; i < n ; i++){
if( W[i] >= L && W[i] <= R){
if( W[i] & 1 ) S[i] = 'T';
else S[i] = 'A';
}
else{
if( W[i] & 1 ) S[i] = 'C';
else S[i] = 'G';
}
}
}
// KMP部分
void Build_Next(const char* pat,int next[]){
int i = 1 , t = 0 , plen = strlen(pat);
next[1] = 0;
while( i < plen + 1 ){
while( t > 0 && pat[i-1]!=pat[t-1] ) t = next[t];
++t , ++i;
if( pat[i-1] == pat[t-1] ) next[i] = next[t];
else next[i] = t;
}
while( t > 0 && pat[i-1] != pat[t-1] ) t = next[t];
++i , ++t;
next[i] = t;
}
int KMP(const char* text , const char* pat){
int i , j , n;
int tlen = strlen(text) , plen = strlen(pat);
int next[plen+2];
Build_Next(pat,next);
i = 0 , j = 1 , n = 0;
while( plen + 1 - j <= tlen - i ){
if( text[i] == pat[j-1] ){
++i , ++j;
if( j == plen + 1 ){
// matches[n++] = i - plen; // 发现匹配结果将匹配子串的位置加入结果集合
n++; j = next[j];
}
}
else{
j = next[j];
if( j == 0 ){
i++ , j++;
}
}
}
return n;
}
int main(){
int n , a , b , L , R;
scanf("%d%d%d%d%d",&n,&a,&b,&L,&R);
scanf("%s",P);
init(n,a,b,L,R);
int ans = KMP(S,P);
printf("%d\n",ans);
return 0;
}
计蒜客 阿里天池的新任务—简单( KMP水 )的更多相关文章
- 计蒜客 30990 - An Olympian Math Problem - [简单数学题][2018ICPC南京网络预赛A题]
题目链接:https://nanti.jisuanke.com/t/30990 Alice, a student of grade 6, is thinking about an Olympian M ...
- 计蒜客 作弊揭发者(string的应用)
鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...
- 计蒜客的一道题dfs
这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...
- 计蒜客模拟赛5 D2T1 成绩统计
又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...
- 计蒜客 等边三角形 dfs
题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...
- 计蒜客 方程的解数 dfs
题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...
- 计蒜客 买书 dfs
题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...
- 计蒜客:Entertainment Box
Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...
- 爬虫acm比赛成绩(多页成绩整合在一起、获取复制不了的数据)(hihocoder、计蒜客)
https://github.com/congmingyige/web-crawler_rank-of-competition-in-JiSuanKe-and-hihocoder 1. 计蒜客(获取复 ...
随机推荐
- 关于git修改和查看用户名邮箱
git 查看/修改用户名.密码 查看用户名和邮箱地址: $ git config user.name $ git config user.email 修改用户名和邮箱地址: $ git config ...
- Linux中tty是什么(tty1~7)
tty:终端设备的统称. tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所 ...
- leetcode_num179_Largest Number
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- poj1753,Flip Game,ArrayDeque<Node>
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 30449 Accepted: 13232 Descr ...
- 301 和 302 对 SEO 的影响
网站优化中,经常会面临网站链接修改或改变的事情,其中一个解决办法就是使用网站跳转的方式,处理变化的链接,下面讲述301和302跳转对SEO的影响. 301(永久移动) 请求的网页已被永久移动到新位置. ...
- 0=='aa'的结果是true
来源于一道面试题: PHP的类型转换规则 1.如果是一个数字与一个字符串进行比较,那么会把字符串转换为数字再比较 2.字符串的转换规则,若字符串以数字开头,则取开头数字作为转换按结果,若无,则取0
- DNS tunnel的原理及实战
DNS tunnel的原理及实战 摘自:http://netsec.ccert.edu.cn/zhengming/2011/11/01/%E8%BD%AC%E8%BD%BD%EF%BC%9Adns-t ...
- EOJ 2847 路由结点
数学知识 凸N边形的对角线条数为:n(n-3)/2因为每一个交点对应两条对角线,而两条对角线又对应着一个四边形.于是焦点个数就对应四边形的个数.问题转化成由凸n边形的n个顶点取4个顶点可组成多少个四边 ...
- javaBean为什么要implements Serializable
转自:https://www.cnblogs.com/jqlbj/p/6261592.html 一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的.因此如果要序 ...
- Python笔记(九)
#encoding=utf-8 # python高级编程 # python面向对象 # 创建类 # 无意中把Visual Studio Code的窗口调小了,查了一下,可以使用Ctrl+=放大窗口,使 ...