[bzoj3670] [NOI2014] [lg2375] 动物园
nxt数组为KMP的next数组num[i]储存了i前面可以匹配的串的个数。先在KMP求nxt中顺便求出num最后再找到对于i的最大的前后缀不重叠的可匹配的j,ans*=(num[j]+1)%1000000007ans即为答案
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 char s[1000100]; 5 int nxt[1000100],num[1000100],n; 6 long long ans; 7 void doit(char *s){ 8 int n=strlen(s); 9 nxt[0]=-1; 10 nxt[1]=0; 11 num[0]=0; 12 num[1]=1;ans=1; 13 for(int i=1,j=0;i<n;i++){ 14 while(j>=0&&s[i]!=s[j])j=nxt[j]; 15 nxt[i+1]=++j; 16 num[i+1]=num[j]+1; 17 } 18 for(int i=1,j=0;i<n;i++){ 19 while(j>=0&&s[i]!=s[j])j=nxt[j]; 20 j++; 21 while((j<<1)>(i+1))j=nxt[j]; 22 ans=(ans*((long long)num[j]+1))%1000000007; 23 } 24 printf("%lld\n",ans); 25 } 26 int main(){ 27 scanf("%d",&n); 28 while(n--){ 29 scanf("%s",s); 30 doit(s); 31 } 32 }
转载于:https://www.cnblogs.com/sffey/p/6888604.html
[bzoj3670] [NOI2014] [lg2375] 动物园相关推荐
- BZOJ3670 [Noi2014]动物园 【KMP计数】
3670: [Noi2014]动物园 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 3143 Solved: 1690 [Submit][Stat ...
- bzoj3670 [Noi2014]动物园
[Noi2014]动物园 Time Limit: 10 Sec Memory Limit: 512 MB Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游 ...
- bzoj-3670 [Noi2014]动物园
3670: [Noi2014]动物园 题目链接 时间限制: 10 Sec 内存限制: 512 MB 提交: 3558 解决: 1925 [提交][][] 题目描述 近日,园长发现动物园中好吃懒做的动物 ...
- BZOJ3670: [Noi2014]动物园
Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习 ...
- 【BZOJ3670】【UOJ5】【NOI2014】动物园
[题目链接] BZOJ UOJ [思路要点] 做两次KMP,第一次求出Next数组,第二次保证匹配位数不超过当前串的一半(否则视为失配),求出Num数组. 时间复杂度\(O(NL)\). [代码] # ...
- BZOJ3670 NOI2014 动物园 题解代码
利用了kmp的next数组特性,求出既是i位字符串的前缀又是其后缀的字符串个数num[i],然后按表达式求出积即可 首先进行统计,在求next的时候就可以统计出num[i]了[对于每一个p=next[ ...
- 【NOI2014】动物园 kmp性质
对于字符串\(S\)的前\(i\)个字符构成的子串,既是它的后缀又是它的前缀的字符串中,它本身除外,最长的长度记作 \(next[i]\) 真是精炼的定义 char s[maxn];int n; in ...
- 携程python_Python 携程
一.协程 1.又称微线程,纤程.英文名Coroutine.一句话说明什么是协程:协程是一种用户态的轻量级线程(相当于操作系统不知道它的存在,是用户控制的). 2.协程拥有自己的寄存器上下文和栈(代码的 ...
- [4.14校内训练赛by hzwer]
来自FallDream的博客,未经允许,请勿转载,谢谢. hzwer又出丧题虐人 4道noi.... 很奇怪 每次黄学长出题总有一题我做过了. 嗯题目你们自己看看呗 好难解释 ----- ...
- 2019.4.summary
2019.4.1 BZOJ1061: [Noi2008]志愿者招募 真心有点难QAQ https://www.byvoid.com/zhs/blog/noi-2008-employee 看void爷的 ...
最新文章
- 矩阵树定理2020HDU多校第6场j-Expectation[位运算+期望]
- 【Android】AsyncTask原理应用及源码关键部分解析
- why Participants tab in GM6 is hidden - by extension
- 《sql语句练习1》
- react性能优化方案_React灵敏且性能卓越的Spray + Akka解决方案,以“在Java和Node.js中发挥并发性和性能”...
- Brush notes:stack、queue、heap
- 【网络安全入门大总结】—Java语言中常用的渗透漏洞大汇总
- SBUS2,一个增强型的SBUS协议,可实现双向通讯功能。SBUS2和SBUS区别到底在哪呢?
- Linux系统性能监控工具Glances
- c语言扩展欧几里得算法编程实现,C语言实现欧几里得算法与扩展欧几里得算法.doc...
- excel 柱状图 多个水滴图组合
- Unity3D学习——使用PUN写一个聊天功能
- 储备池计算(Reservoir Computing)综述
- Soul源码总结-01-15
- 数据分析师的发展前景
- 3分钟看懂:7大教育培训企业邮件营销 (附案例)
- win7计算机开始里没有设置,win7系统开始菜单没有设置的解决方法?
- SpringBoot 空指针处理总结
- 「传统的互联网模式」呈现的是粗放式的,野蛮生长的状态
- MATLAB基本语法详解