【题目链接】

  • BZOJ
  • UOJ

【思路要点】

  • 做两次KMP,第一次求出Next数组,第二次保证匹配位数不超过当前串的一半(否则视为失配),求出Num数组。
  • 时间复杂度\(O(NL)\)。

【代码】

#include<bits/stdc++.h>
using namespace std;
#define MAXN    1000005
#define P   1000000007
template <typename T> void read(T &x) {x = 0; int f = 1;char c = getchar();for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;for (; isdigit(c); c = getchar()) x = x * 10 + c - '0';x *= f;
}
char s[MAXN];
int len[MAXN], num[MAXN], nxt[MAXN];
int main() {int T; read(T);while (T--) {scanf("\n%s", s + 1);int n = strlen(s + 1);nxt[1] = 0; num[1] = 1;for (int i = 2; i <= n; i++) {int j = nxt[i - 1];while (j && s[i] != s[j + 1]) j = nxt[j];if (s[i] == s[j + 1]) j++;nxt[i] = j; num[i] = num[j] + 1;}long long ans = 1;int pos = 0;for (int i = 2; i <= n; i++) {while (pos && s[i] != s[pos + 1]) pos = nxt[pos];if (s[i] == s[pos + 1]) pos++;if (pos > i / 2) pos = nxt[pos];ans = ans * (num[pos] + 1) % P;}printf("%lld\n", ans);}return 0;
}

【BZOJ3670】【UOJ5】【NOI2014】动物园相关推荐

  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. P2375 [NOI2014] 动物园 kmp fail指针/倍增

    传送门 文章目录 题意: 思路: 题意: 思路: 由kmpkmpkmp中失配数组nenene的含义我们知道,ne[i],ne[ne[i]],...ne[i],ne[ne[i]],...ne[i],ne ...

  5. bzoj 3670 [NOI2014]动物园

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

  6. 洛谷P2375 [NOI2014] 动物园 题解

    洛谷P2375 [NOI2014] 动物园 题解 题目链接:P2375 [NOI2014] 动物园 题意: 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物 ...

  7. BZOJ3670: [Noi2014]动物园

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

  8. BZOJ3670 NOI2014 动物园 题解代码

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

  9. bzoj 3670: [Noi2014]动物园 kmp与扩展kmp

    bzoj 3670: [Noi2014]动物园容 Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才 ...

  10. [NOI2014]动物园

    嘟嘟嘟 NOI2014水题第二道. 起手暴力,神经兮兮的写了个\(O(Tn ^ 2)\)的双哈希,只得了30分.(5e8开O2果然跑不过去) 昨晚写的暴力,今天又看了看这道题,发现就是求一个点跳多少次 ...

最新文章

  1. java-jwt这个库没用过吧?
  2. matlab中读文件的行数_Matlab中读取txt文件的几种方法
  3. matlab读取文件与写入文件
  4. WPF 打印不显示的元素
  5. 移动端数据爬取和Scrapy框架
  6. button css背景透明,css背景透明
  7. 解决webSocket不兼容IE浏览器问题
  8. IntelliJ IDEA中文汉化教程
  9. html卷轴展开动画,Flash制作卷轴展开的动画
  10. 计算机B类会议排名,计算机学科会议排名
  11. 10019---Linux查看CPU、内存、硬盘、版本信息
  12. 【Camera】Camera基础概念
  13. c语言程序实现进程的管道通信,C 进程间通信--命名管道通信代码实现及其原理图示...
  14. 课设复习之信息论固定算术编码与译码
  15. 猫狗二分类实战(PyTorch)
  16. Keil MDK 选中相同变量 高亮突出显示
  17. Python将字符串转换成dataframe
  18. 学习C语言的网站(中文的英文的都有)
  19. 想知道微信名片怎么弄?其实很容易
  20. MySQL 让你拥有不一样感觉

热门文章

  1. 通信原理包络是什么意思_直缝钢管的矫直原理
  2. v-solt插槽实践用法讲解
  3. 使用gphotos-sync备份Google 相册
  4. 天秀,“手机” 也可以写Python代码了!
  5. 笔记本计算机盖上盖子关机,笔记本电脑不关机就盖上盖子,这样好吗
  6. Python抓取桌面截图
  7. MITO-ID线粒体膜电位细胞毒性试剂盒解决方案
  8. JavaScript Promise 教程 - 如何在 JS 中解决或拒绝 Promise
  9. 是计算机系男神女神用英语怎么说,Azzurro意大利私房菜(购物公园店)
  10. 串口服务器Moxa NPort 5650小结