题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3336

题目:


求给定字符串每个前缀在整个字符串出现的次数之和

解题思路:


初始答案为n,每个前缀都出现一次。

字符串的下标从0开始存,next[0]=-1,当next[i]≠0且≠-1时,说明子串的某个前缀(也是整个字符串的前缀)和整个子串的某个后缀相同,即整个字符串的前缀重复出现了一次,对答案贡献1,遍历next数组统计答案即可。

ac代码:


#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10;
const int mod = 10007;
typedef long long ll;
int nxt[maxn];
char s[maxn];
int n;
void get_nxt()
{int i = 0, k = -1;nxt[0] = -1;while(i < n){if(k == -1 || s[i] == s[k]){i++;k++;nxt[i] = k;}else k = nxt[k];}
}
int main() {// freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);int t;scanf("%d", &t);while(t--){scanf("%d", &n);scanf("%s", s);get_nxt();ll ans = n % mod;for(int i = 0; i <= n; i++)if(nxt[i] != -1 && nxt[i] != 0) ans = (ans + 1) % mod;printf("%lld\n", ans);}return 0;
}

【HDU3336】Count the String(kmp--每个前缀出现的次数)相关推荐

  1. [HDU3336]Count the string(KMP+DP)

    Solution 不稳定的传送门 对KMP的灵活应用 设dp[i]表示前[1,i]的答案 那么dp[i]=dp[p[i]]+1,p[i]为失配函数 Code #include <cstdio&g ...

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

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

  3. HDU 3336 Count the string KMP

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

  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. 字符串相关处理kmp,前缀数,后缀树,后缀数组,最长回文串,最长重复字串,最长非重复字串

    1. 最长回文串 一般用后缀数组或者后缀树可以解决, 用此方法:http://blog.csdn.net/v_july_v/article/details/6897097 预处理后缀树,使得查询LCA ...

  6. 1375. 二进制字符串前缀一致的次数-前序遍历法

    1375. 二进制字符串前缀一致的次数 给你一个长度为 n .下标从 1 开始的二进制字符串,所有位最开始都是 0 .我们会按步翻转该二进制字符串的所有位(即,将 0 变为 1). 给你一个下标从 1 ...

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

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

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

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

  9. kmp求前缀和后缀的最大重复部分

    hdu 2594 kmp水题 求s1的前缀和s2的后缀重复度的最大值 2013-06-05 11:16 1199人阅读 评论(0) 收藏 举报  分类: KMP(8)  版权声明:本文为博主原创文章, ...

  10. 牛客多校4 - Count New String(序列自动机+广义后缀自动机)

    题目链接:点击查看 题目大意: 题目分析:首先观察到集集合 A 中那个套娃的表示,外层的范围是 [ x1 , y1 ] ,内层是 [ x2 , y2 ] ,而内层的定义域实际上是包含在外层的定义域内的 ...

最新文章

  1. angular 如何在index html 页面包含子页面_Webpack4.0各个击破(1)html篇
  2. break后面的语句还执行吗_流程控制语句
  3. Mato的文件管理 (莫队)题解
  4. 10 行 Python 代码,批量压缩图片 500 张,简直太强大了
  5. python中集合所用的reduce_Python中reduce函数和lambda表达式的学习
  6. 10g数据库入门与实践 oracle_从实践中学习Oracle SQL笔记一
  7. 文本挖掘(part1)--文本挖掘概述
  8. 安装漂亮的Faenza1.3与Faience0.5图标主题
  9. linuxoracle查看用户权限_实现Oracle授予用户权限的一个实例
  10. cif文件服务器搭建,在linux下搭建NFS服务器实现文件共享
  11. 一文说清ZooKeeper的实现原理
  12. 纯干货!如何做一个成功的大数据项目
  13. Linux电源管理-Autosleep
  14. 自动化之RPA工具之UiPath
  15. flutter仿ReadHub+
  16. Python 小白学习之:linux 基础和 python 入门
  17. CVPR2022 | 重新审视池化:你的感受野不是最理想的
  18. 火狐3本月17日发布 与IE 8设计理念完全不同
  19. OFDM系统中的信道估计基础知识(一)
  20. 一键解决Conda安装某个库(如opencv)时conflict(冲突)的问题

热门文章

  1. 《深入理解Linux内核》笔记1:内存寻址
  2. 蓝桥杯 第几个幸运数 set
  3. Python中os.listdir和os.walk的区别
  4. QProcess 使用
  5. Div高度自适应内容高度
  6. moongose模糊查询相关博客
  7. linux、mysql、nginx、tomcat 环境下压力测试的主要调试参数
  8. linux mysql 相关操作、问题
  9. [工具类]泛型集合转换为DataTable
  10. U大师U盘启动盘制作工具(V1.1.0版)——升级U盘