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] 动物园相关推荐

  1. BZOJ3670 [Noi2014]动物园 【KMP计数】

    3670: [Noi2014]动物园 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 3143  Solved: 1690 [Submit][Stat ...

  2. bzoj3670 [Noi2014]动物园

    [Noi2014]动物园 Time Limit: 10 Sec Memory Limit: 512 MB Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游 ...

  3. bzoj-3670 [Noi2014]动物园

    3670: [Noi2014]动物园 题目链接 时间限制: 10 Sec 内存限制: 512 MB 提交: 3558 解决: 1925 [提交][][] 题目描述 近日,园长发现动物园中好吃懒做的动物 ...

  4. BZOJ3670: [Noi2014]动物园

    Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习 ...

  5. 【BZOJ3670】【UOJ5】【NOI2014】动物园

    [题目链接] BZOJ UOJ [思路要点] 做两次KMP,第一次求出Next数组,第二次保证匹配位数不超过当前串的一半(否则视为失配),求出Num数组. 时间复杂度\(O(NL)\). [代码] # ...

  6. BZOJ3670 NOI2014 动物园 题解代码

    利用了kmp的next数组特性,求出既是i位字符串的前缀又是其后缀的字符串个数num[i],然后按表达式求出积即可 首先进行统计,在求next的时候就可以统计出num[i]了[对于每一个p=next[ ...

  7. 【NOI2014】动物园 kmp性质

    对于字符串\(S\)的前\(i\)个字符构成的子串,既是它的后缀又是它的前缀的字符串中,它本身除外,最长的长度记作 \(next[i]\) 真是精炼的定义 char s[maxn];int n; in ...

  8. 携程python_Python 携程

    一.协程 1.又称微线程,纤程.英文名Coroutine.一句话说明什么是协程:协程是一种用户态的轻量级线程(相当于操作系统不知道它的存在,是用户控制的). 2.协程拥有自己的寄存器上下文和栈(代码的 ...

  9. [4.14校内训练赛by hzwer]

    来自FallDream的博客,未经允许,请勿转载,谢谢. hzwer又出丧题虐人 4道noi....        很奇怪 每次黄学长出题总有一题我做过了. 嗯题目你们自己看看呗 好难解释 ----- ...

  10. 2019.4.summary

    2019.4.1 BZOJ1061: [Noi2008]志愿者招募 真心有点难QAQ https://www.byvoid.com/zhs/blog/noi-2008-employee 看void爷的 ...

最新文章

  1. 矩阵树定理2020HDU多校第6场j-Expectation[位运算+期望]
  2. 【Android】AsyncTask原理应用及源码关键部分解析
  3. why Participants tab in GM6 is hidden - by extension
  4. 《sql语句练习1》
  5. react性能优化方案_React灵敏且性能卓越的Spray + Akka解决方案,以“在Java和Node.js中发挥并发性和性能”...
  6. Brush notes:stack、queue、heap
  7. 【网络安全入门大总结】—Java语言中常用的渗透漏洞大汇总
  8. SBUS2,一个增强型的SBUS协议,可实现双向通讯功能。SBUS2和SBUS区别到底在哪呢?
  9. Linux系统性能监控工具Glances
  10. c语言扩展欧几里得算法编程实现,C语言实现欧几里得算法与扩展欧几里得算法.doc...
  11. excel 柱状图 多个水滴图组合
  12. Unity3D学习——使用PUN写一个聊天功能
  13. 储备池计算(Reservoir Computing)综述
  14. Soul源码总结-01-15
  15. 数据分析师的发展前景
  16. 3分钟看懂:7大教育培训企业邮件营销 (附案例)
  17. win7计算机开始里没有设置,win7系统开始菜单没有设置的解决方法?
  18. SpringBoot 空指针处理总结
  19. 「传统的互联网模式」呈现的是粗放式的,野蛮生长的状态
  20. MATLAB基本语法详解

热门文章

  1. 数据库信息查询(作者不是我)
  2. 人大副教授从细节上教你如何快速进行研究生早期的科研之路
  3. 【论文笔记】EMNLP2019: 基于层次多图卷积网络的实体类型分类
  4. 【10.8】每日NLP学术论文推荐
  5. 20191226_1_淘宝口红商品分析
  6. 想来字节跳动和我做同事吗?抓紧这次机会吧~
  7. LeetCode刷题——27. 移除元素
  8. LeetCode刷题——455. 分发饼干
  9. 运营破局,四步完成从0到1
  10. Want VS Needs,产品经理基于场景的需求挖掘