HDU 3336 KMP
题意:求每一个前缀,跟前缀相同的每个子串。
此题:网上很多都是假程序,不过也AC了,的确我测试几个案例之后的的确确是存在这个问题。
分析:每一个前缀,可以考虑KMP,f失配指针,如何求得它出现了多少次呢?
如果f > 0 ,至少这个前缀是符合的,但是,你会少算一些,例如:

你会少算子串a,怎么弥补回来呢? 继续递归下去(其实不是递归啦),找这个子串,是否还可以找出子串和前缀相同。
完美解决了~~~
#include <bits/stdc++.h> using namespace std; const int maxn = ;
const int MOD = ;
char P[maxn];
int f[maxn];
int len; int main()
{
//freopen("in.txt","r",stdin);
int t;
cin>>t;
while(t--) {
cin>>len>>P; f[] = f[] = ;
for(int i = ; i < len; i++) {
int j = f[i];
while(j&&P[i]!=P[j]) j = f[j];
f[i+] = P[i]==P[j] ? j+ : ;
} int ans= len; for(int i = ; i <= len; i++)
{
int tmp = f[i];
while(tmp)
{
ans = (ans + ) % MOD;
tmp = f[tmp];
}
}
cout<<ans<<endl;
} return ;
}
HDU 3336 KMP的更多相关文章
- hdu 3336 kmp+next数组应用
		分析转自:http://972169909-qq-com.iteye.com/blog/1114968 十分易懂 题意:求字串中[前缀+跟前缀相同的子串]的个数? Sample Input 1 4 a ... 
- HDU 3336 (KMP next性质) Count the string
		直接上传送门好了,我觉得他分析得非常透彻. http://972169909-qq-com.iteye.com/blog/1114968 #include <cstdio> #includ ... 
- HDU 3336 Count the string(KMP的Next数组应用+DP)
		Count the string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ... 
- hdu poj KMP简单题目总结
		hdu 3336 题意:输入一个字符串求每个前缀在串中出现的次数和 sol:只要稍微理解下next 数组的含义就知道只要把每个有意义的next值得个数加起来即可 PS:网上有dp解法orz,dp[i] ... 
- hdu 1686 KMP模板
		// hdu 1686 KMP模板 // 没啥好说的,KMP裸题,这里是MP模板 #include <cstdio> #include <iostream> #include ... 
- Cyclic Nacklace HDU 3746 KMP 循环节
		Cyclic Nacklace HDU 3746 KMP 循环节 题意 给你一个字符串,然后在字符串的末尾添加最少的字符,使这个字符串经过首尾链接后是一个由循环节构成的环. 解题思路 next[len ... 
- hdu 3336 Count the string -KMP&dp
		It is well known that AekdyCoin is good at string problems as well as number theory problems. When g ... 
- HDU 3336 Count the string KMP
		题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3336 如果你是ACMer,那么请点击看下 题意:求每一个的前缀在母串中出现次数的总和. AC代码: # ... 
- (KMP)Count the string -- hdu -- 3336
		http://acm.hdu.edu.cn/showproblem.php?pid=3336 Count the string Time Limit: 2000/1000 MS (Java/Other ... 
随机推荐
- docker 创建容器时遇到的坑
			坑一.时区问题 在创建系统镜像时,比如centos,会默认最小安装,并且时区默认的是UTC 所以在下好centos的原始镜像后,最好再重新构建一个新的镜像 # 命令 docker pull cento ... 
- Spring JDBC Framework
			引自 :学习经典:Spring JDBC Framework 这里记录我对Spring JDBC框架的学习.由于Spring JDBC和我之前做的工作有很多共同之处,学习经典Framework的设计, ... 
- 牛客网Java刷题知识点之拥塞发生的主要原因、TCP拥塞控制、TCP流量控制、TCP拥塞控制的四大过程(慢启动、拥塞避免、快速重传、快速恢复)
			不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ... 
- poi excel 常用api
			http://www.cnblogs.com/huajiezh/p/5467821.html 
- 资料收集:学习 Linux/*BSD/Unix 的 30 个最佳在线文档
			文章转自:https://linux.cn/article-10311-1.html 手册页(man)是由系统管理员和 IT 技术开发人员写的,更多的是为了作为参考而不是教你如何使用.手册页对于已经熟 ... 
- Aaja.pro 未定义
			问题描述:安装新系统后,将代码迁至新系统,所有用到ajaxpro框架调用ajax方法时均报“xx未定义”的错: 解决问题的过程 : 1.看看你在前台调用的方法的命名空间,方法名和后台的是否对应.在后台 ... 
- MVC中提交表单的4种方式
			一,MVC HtmlHelper方法 Html.BeginForm(actionName,controllerName,method,htmlAttributes){} BeginRouteForm ... 
- mysql通过数据文件恢复数据方法
			情况描述:服务器硬盘损坏,服务器换了个新硬盘 ,然后老硬盘插在上面.挂载在这台机器.可以从老硬盘里面拿到数据.只拿到了里面的mysql数据文件夹,把数据文件夹覆盖新的服务器mysql数据文件夹 启动报 ... 
- MVC设置默认页面
			方法1:在RouteConfig.cs文件中配置默认路由 public class RouteConfig { public static void RegisterRoutes(RouteColle ... 
- 01.c#中的访问修饰符
			public 公开的 private 私有的,只能在当前类的内部访问 protected 受保护的,只能在当前内的内部以及该类的子类可以访问. internal 可以在同一个程序(项目)集中 ... 
