字胡串什么的一直不太会,感觉这题…还蛮本质的
考虑暴力求解:num[i]相当于从一直跳nxt,如果nxt[j] * 2 <= i 那么就累加答案

其实这是一个树的结构,也就是说跳到一个结点满足条件,那么它上面的结点一定都满足,所以在求nxt的时候顺便递推一下每一个结点的答案,那么模拟一下匹配nxt的过程,只要跳到第一个j * 2 <= i 就可以算答案了
不会算时间复杂度QuQ

Code:

#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll; const int N = 1e6 + ;
const ll mod = 1e9 + ; int testCase, n, nxt[N];
ll num[N];
char s[N]; int main() {
for(scanf("%d", &testCase); testCase--; ) {
scanf("%s", s + );
n = strlen(s + ); memset(nxt, , sizeof(nxt));
memset(num, , sizeof(num));
num[] = ;
for(int i = , j = ; i <= n; i++) {
for(; j > && s[j + ] != s[i]; j = nxt[j]);
if(s[j + ] == s[i]) j++;
nxt[i] = j;
num[i] = num[j] + 1LL;
} ll ans = 1LL;
for(int i = , j = ; i <= n; i++) {
for(; j > && s[j + ] != s[i]; j = nxt[j]);
if(s[j + ] == s[i]) j++;
for(; (j * ) > i; j = nxt[j]);
ans = ans * (num[j] + )% mod;
}
printf("%lld\n", ans);
}
return ;
}

Luogu 2375 [NOI2014]动物园的更多相关文章

  1. 洛谷2375 NOI2014动物园(KMP)

    题目链接: 题目. 简单一点来说,这个题就是求一个字符串的\(num\)数组的和,其中有\(num[i]\)表示1~i中有多少个不交叉的相等的前缀和后缀 的数目,要求一个\(O(n)\)的做法 QwQ ...

  2. 2021.11.16 P2375 [NOI2014] 动物园(EXKMP+差分)

    2021.11.16 P2375 [NOI2014] 动物园(EXKMP+差分) https://www.luogu.com.cn/problem/P2375 题意: PS:这道神题的背景让人疑惑,重 ...

  3. [BZOJ3670][UOJ#5][NOI2014]动物园

    [BZOJ3670][UOJ#5][NOI2014]动物园 试题描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学 ...

  4. NOI2014 动物园

    3670: [Noi2014]动物园 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 174  Solved: 92[Submit][Status] D ...

  5. 字符串(KMP):BZOJ 3670 [Noi2014]动物园

    3670: [Noi2014]动物园 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1521  Solved: 813[Submit][Status] ...

  6. BZOJ 3670: [Noi2014]动物园【KMP变形 】

    3670: [Noi2014]动物园 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2738  Solved: 1475[Submit][Status ...

  7. BZOJ_3670_[Noi2014]动物园_KMP

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

  8. bzoj千题计划250:bzoj3670: [Noi2014]动物园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...

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

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

随机推荐

  1. I.MX6 make menuconfig进入x86模式

    /************************************************************************ * I.MX6 make menuconfig进入x ...

  2. js 去除字符串两边的空格

    js 去除字符串两边的空格 function trim(str){ //删除左右两端的空格          return str.replace(/(^\s*)|(\s*$)/g, "&q ...

  3. bzoj 4059:Non-boring sequences 分治

    题目: 我们害怕把这道题题面搞得太无聊了,所以我们决定让这题超短.一个序列被称为是不无聊的,仅当它的每个连续子序列存在一个独一无二的数字,即每个子序列里至少存在一个数字只出现一次.给定一个整数序列,请 ...

  4. XML数据库的尝试

    首先祝大家新年快乐.身体健康,平安就是福气. 对于一般的个人迷你项目,数据量不大的时候,完全没有必要使用数据库,管理数据使用XML就可以了. 自己尝试写了一个XML数据库,插入1w条小记录,大概3M大 ...

  5. Qt中int转换成QString

    (1) QString QString::number ( long n, int base = 10 ) [static] examle: long a = 48; QString s = QStr ...

  6. spring mybatis 多个数据源配置

    mybatis生成器:http://blog.csdn.net/tolcf/article/details/50835165 通过命令生成:java -jar mybatis-generator-co ...

  7. ORA-28547:connection to server failed, probable Oracle Net admin error错误,解决方法

    当用navicat连接oralce数据库时报ORA-28547错误时,直接懵逼了,上网查了资料说是navicat自带的oci.dll文件的版本和服务器端的oralce数据库的版本不一致造成的. 修改O ...

  8. hihoCoder#1095(二分搜索)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi and Little Ho are playing a drinking game called HI ...

  9. [转载]python的range()函数用法

    使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的slide,最后分析一个好玩儿的冒泡程序. 这里记 ...

  10. 为什么 Eclipse 里的 Classpath Variables M2_REPO 无法修改(non modifiable)

    本文转载自:http://uule.iteye.com/blog/2034097 解决方法: 在C:\Documents and Settings\Administrator\.m2中放入settin ...