hdu3336kmp,dp
来源:互联网 发布:b2b2c 分销 java 编辑:程序博客网 时间:2024/05/22 04:29
http://acm.hdu.edu.cn/status.php
求给出字符串的所有前缀在原字符串中出现的次数和
思路 每个前缀是不是都要去和 串的以某个节点结尾的后缀去匹配,KMP的思想就是找出每个位置i的可匹配最大前缀j。
令dp[i]表示S[0,i-1]串的后缀能匹配的前缀个数,那么dp[i]=dp[next[i]]+1, dp[1]=1正好表示串s[0]的后缀只能匹配串s[0].
#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>using namespace std;char s[200005];int nex[200005];int dp[200005];int n;void getnext(){ int len=n; nex[0]=-1; int i=0,j=-1; while(i<len) { if(j==-1||s[i]==s[j]) { i++; j++; nex[i]=j; } else j=nex[j]; }}int main(){ int T; scanf("%d",&T); while(T--) { scanf("%d%s",&n,s); getnext(); int sum=0; dp[0]=0; for(int i=1; i<=n; i++) { dp[i]=dp[nex[i]]+1; sum+=dp[i]; sum%=10007; } printf("%d\n",sum); } return 0;}
0 0
- hdu3336kmp,dp
- dp
- dp
- dp
- 【DP】
- dp
- dp
- DP
- DP
- DP
- DP
- DP
- dp
- DP
- dp
- DP
- DP
- dp
- Unity中Awake和Start的区别
- 5-31 字符串循环左移
- 仿写“同行说”之界面分析篇
- XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks随手记
- iOS网络编程学习笔记---1
- hdu3336kmp,dp
- Apache 配置二级域名匹配目录及多个站点配置 +阿里云服务器如何解析添加二级域名
- HD 1176 免费馅饼 (DP)
- iOS事务的基本概念
- 导入的Xutils里Foreign报错
- Java Calendar 类的时间操作
- Servlet基础
- gcc 编译器常用的命令行参数一览
- mysql数据库中date datetime timestamp time的区别