[HDU3336]Count the string(KMP+DP)
Solution
不稳定的传送门
对KMP的灵活应用
设dp[i]表示前[1,i]的答案
那么dp[i]=dp[p[i]]+1,p[i]为失配函数
Code
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;const int mo=10007;
int n,T,dp[200010],p[200010],Ans;
char s[200010]; int main(){scanf("%d",&T);while(T--){scanf("%d\n%s",&n,s+1);Ans=0;memset(p,0,sizeof(p));memset(dp,0,sizeof(dp));for(int i=2,j=0;i<=n;++i){while(j>0&&s[i]!=s[j+1]) j=p[j];if(s[i]==s[j+1]) ++j;p[i]=j;}for(int i=1;i<=n;++i) Ans=(Ans+(dp[i]=dp[p[i]]+1))%mo;printf("%d\n",Ans);}return 0;
}
转载于:https://www.cnblogs.com/void-f/p/8893624.html
[HDU3336]Count the string(KMP+DP)相关推荐
- HGU3336 Count the string (KMP Next数组的应用)
题意:给出一个字符串,求它所有前缀在此字符串中出现的次数. 分析:一看,肯定是kmp中 next[i] 求以下标i-1结尾的字符串,使得最长的(前缀==后缀)的长度.很好想到,当next非零时,肯定和 ...
- HDU 3336 Count the string KMP
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3336 如果你是ACMer,那么请点击看下 题意:求每一个的前缀在母串中出现次数的总和. AC代码: # ...
- HDU - 4552 怪盗基德的挑战书(后缀数组+RMQ/KMP+dp)
题目链接:点击查看 题目大意:给出一个字符串,统计每个前缀在字符串中出现的次数之和 题目分析:可以直接先用后缀数组跑出来height,再用RMQ跑出来任意两个后缀的height,我们可以将题意转换为求 ...
- Zoj 3587 Marlon's String (KMP 字符串拼接 前缀出现次数)
题意:给字符串S,T,找到所有的tetrad (a,b,c,d), Sa..b + Sc..d = T , a≤b and c≤d.也就是把T分成两段,这两段都由S中的子串组成的,求有多少中组合方式( ...
- HDU 3336 Count the string(KMP+DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336 题意:给你一个字符串,计算其所有前缀在该字符串出现的次数的总和. 思路:next[j]=i,代表 ...
- UVa11022 String Factoring(kmp+dp)
用dp(i,j)表示子串s[i..j]可以表示的最小长度.动态转移方程有 dp(i,j) = min{dp(i,k) + dp(k+1,j)},其中k属于[i,j].s[i..j]是周期串,最小周期为 ...
- hdu3336 KMP + DP 前缀数组出现的次数
题意: 给你一个串,问你他的所有前缀子串在本串中的出现次数,注释:abc的前缀子串是 a ab abc; 思路: 还是利用了next数组,先对子串求出next数组,再开一个数组d ...
- zoj 3587 Marlon's String(拓展KMP+dp)
链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3587 题目大意: 给字符串S,T, 找到所有的tetrad ( ...
- 【XSY2472】string KMP 期望DP
题目大意 给定一个由且仅由字符'H','T'构成的字符串\(S\). 给定一个最初为空的字符串\(T\) ,每次随机地在\(T\)的末尾添加'H'或者'T'. 问当\(S\)为\(T\)的后缀时, ...
最新文章
- 五笔字根表识别码图_精选五笔输入法拆字原则,值得收藏
- python:程序猿的方式在元宵佳节之际,带你设计【东方明珠】动画浪漫烟花秀(python编程利用Tkinter+PIL库)
- 无法连接到RDP服务器
- 20171207L09-04老男孩Linux运维实战培训-Lamp系列-Apache服务生产实战应用
- Qt:Windows编程—Qt实现进程管理
- 详解在Visual Studio中使用git版本系统 [转]
- Highcharts改Y轴的刻度值
- python读取txt、csv以及xml文件
- (转自YYW'S BLOG)IListT 转换成 DataSet
- 10 things they never teach in college about programming
- Linux网络编程之connect创建
- assert断言的概念
- 2018Oracle11g下载与安装菜鸟教程(二)
- 研究私域玩法?你可以试试拼团模式
- ArcGIS——使用符号级别区分重叠的面图层
- 纯英文拼音交流1声应该表示成0,要不就不知道怎么发音
- 2022 数学建模C题 高教社杯 含半成品论文 部分代码 全部数学模型 和全套思路
- unity+Cardboard SDK VR开发Cardboard Unity SDK讲解
- 自动控制的故事——数字控制部分
- Mott-insulator transitions in BEC