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)相关推荐

  1. HGU3336 Count the string (KMP Next数组的应用)

    题意:给出一个字符串,求它所有前缀在此字符串中出现的次数. 分析:一看,肯定是kmp中 next[i] 求以下标i-1结尾的字符串,使得最长的(前缀==后缀)的长度.很好想到,当next非零时,肯定和 ...

  2. HDU 3336 Count the string KMP

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3336 如果你是ACMer,那么请点击看下 题意:求每一个的前缀在母串中出现次数的总和. AC代码: # ...

  3. HDU - 4552 怪盗基德的挑战书(后缀数组+RMQ/KMP+dp)

    题目链接:点击查看 题目大意:给出一个字符串,统计每个前缀在字符串中出现的次数之和 题目分析:可以直接先用后缀数组跑出来height,再用RMQ跑出来任意两个后缀的height,我们可以将题意转换为求 ...

  4. 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中的子串组成的,求有多少中组合方式( ...

  5. HDU 3336 Count the string(KMP+DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336 题意:给你一个字符串,计算其所有前缀在该字符串出现的次数的总和. 思路:next[j]=i,代表 ...

  6. 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]是周期串,最小周期为 ...

  7. hdu3336 KMP + DP 前缀数组出现的次数

    题意:       给你一个串,问你他的所有前缀子串在本串中的出现次数,注释:abc的前缀子串是 a ab abc; 思路:      还是利用了next数组,先对子串求出next数组,再开一个数组d ...

  8. zoj 3587 Marlon's String(拓展KMP+dp)

    链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3587 题目大意: 给字符串S,T,   找到所有的tetrad ( ...

  9. 【XSY2472】string KMP 期望DP

    题目大意 给定一个由且仅由字符'H','T'构成的字符串\(S\). ​ 给定一个最初为空的字符串\(T\) ,每次随机地在\(T\)的末尾添加'H'或者'T'. 问当\(S\)为\(T\)的后缀时, ...

最新文章

  1. 五笔字根表识别码图_精选五笔输入法拆字原则,值得收藏
  2. python:程序猿的方式在元宵佳节之际,带你设计【东方明珠】动画浪漫烟花秀(python编程利用Tkinter+PIL库)
  3. 无法连接到RDP服务器
  4. 20171207L09-04老男孩Linux运维实战培训-Lamp系列-Apache服务生产实战应用
  5. Qt:Windows编程—Qt实现进程管理
  6. 详解在Visual Studio中使用git版本系统 [转]
  7. Highcharts改Y轴的刻度值
  8. python读取txt、csv以及xml文件
  9. (转自YYW'S BLOG)IListT 转换成 DataSet
  10. 10 things they never teach in college about programming
  11. Linux网络编程之connect创建
  12. assert断言的概念
  13. 2018Oracle11g下载与安装菜鸟教程(二)
  14. 研究私域玩法?你可以试试拼团模式
  15. ArcGIS——使用符号级别区分重叠的面图层
  16. 纯英文拼音交流1声应该表示成0,要不就不知道怎么发音
  17. 2022 数学建模C题 高教社杯 含半成品论文 部分代码 全部数学模型 和全套思路
  18. unity+Cardboard SDK VR开发Cardboard Unity SDK讲解
  19. 自动控制的故事——数字控制部分
  20. Mott-insulator transitions in BEC

热门文章

  1. Android 如何快速定位当前页面是哪个Activity or Fragment
  2. 【转载】CMenu自绘---钩子---去除边框
  3. tensorflow保存模型和加载模型的方法(Python和Android)
  4. Java单链表反转 详细过程
  5. 常见索引结构—FST
  6. Python常用编程模块汇总
  7. time模块 random模块
  8. PYTHON作业----编写多级菜单
  9. Hyperspace Travel
  10. Node中使用mysql模块遇到的问题