**链接:****传送门 **

思路: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水 )的更多相关文章

  1. 计蒜客 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 ...

  2. 计蒜客 作弊揭发者(string的应用)

    鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...

  3. 计蒜客的一道题dfs

    这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...

  4. 计蒜客模拟赛5 D2T1 成绩统计

    又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...

  5. 计蒜客 等边三角形 dfs

    题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...

  6. 计蒜客 方程的解数 dfs

    题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...

  7. 计蒜客 买书 dfs

    题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...

  8. 计蒜客:Entertainment Box

    Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...

  9. 爬虫acm比赛成绩(多页成绩整合在一起、获取复制不了的数据)(hihocoder、计蒜客)

    https://github.com/congmingyige/web-crawler_rank-of-competition-in-JiSuanKe-and-hihocoder 1. 计蒜客(获取复 ...

随机推荐

  1. asp.net--OnAuthorization方法

    我看别人可以通过这个方法中的 Context.Request.Headers.Authorization对象来调取对象来使用,可是我通过实验尝试不出来,真不知道为什么,这儿留个坑吧 别人的 我的

  2. Python之Mysql及SQLAlchemy操作总结

    一.Mysql命令总结 1.创建库 create database test1; 2.授权一个用户 grant all privileges on *.* to 'feng'@'%' identifi ...

  3. hdu5389 Zero Escape DP+滚动数组 多校联合第八场

    Zero Escape Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) To ...

  4. 学习日记之原型模式和Effective C++

    原型模式(Prototype):用原型实例制定创建对象的种类,而且听过拷贝这些原型创建新的对象. 浅复制:假设字段是值类型的,则对该字段运行逐位复制.假设字段是引用类型.则复制引用但不复制引用的对象. ...

  5. Android学习笔记(8):ViewGroup类

    A ViewGroup is a special view that can contain other views (called children.) The view group is the  ...

  6. php学习随记3

    <? php #正則表達式 #就是一种描写叙述字符串结构的语法规则 #是一个特定的格式化模式 #1. 行定位符 /* 1) ^行首 2)$行尾 tm eqaul Tomorrow Moon ^t ...

  7. MyBatis中sqlSession操作数据库,不报错但无法实现数据修改(增、改、删)

    public void addCustomerTest() throws Exception { SqlSession sqlSession = MyBatisUtils.getSession(); ...

  8. get post 的区别

    比较 GET 与 POST 还有一个问题就是:form 表单的get post 的默认传输量是多少? 期待评论区来解答!!! 一个获取数据,一个修改数据. 下面的表格比较了两种 HTTP 方法:GET ...

  9. django 实现websocket

    一.简述:django实现websocket,之前django-websocket退出到3.0之后,被废弃.官方推荐大家使用channels. channels通过升级http协议 升级到websoc ...

  10. 最小环 hdu1599 poj1734

    最小环用floyd改编. hdu1599特殊一些.要求至少有三个不同的点,并且除了起点与终点重合外,中间不能有环.有点很奇怪,最大值不能为0x3f3f3f3f. poj1374就没那么讲究. //hd ...