考虑dp[i]代表前缀s[1...i]出现的次数,必定有dp[nxt[i]] += dp[i]

倒着推就是了

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int T, n, nxt[200005], dp[200005], ans;
const int mod=10007;
char a[200005];
void mknxt(){
int k=0;
for(int i=2; i<=n; i++){
while(k && a[i]!=a[k+1]) k = nxt[k];
if(a[i]==a[k+1]) nxt[i] = ++k;
}
}
int main(){
cin>>T;
while(T--){
ans = 0;
scanf("%d", &n);
scanf("%s", a+1);
memset(nxt, 0, sizeof(nxt));
for(int i=1; i<=n; i++) dp[i] = 1;
mknxt();
for(int i=n; i>=1; i--)
dp[nxt[i]] = (dp[nxt[i]] + dp[i]) % mod;
for(int i=1; i<=n; i++)
ans = (ans + dp[i]) % mod;
printf("%d\n", ans);
}
return 0;
}

最新文章

  1. 添加Labels的两种方法
  2. C#程序猿电脑重装记录
  3. PLSQL设置显示的字符集及PLSQL的一些自身设置
  4. Swift初学有一点难理解的东西,整理了一下,想明白了。
  5. java多线程之CAS
  6. telnet与ssh有什么不同呀
  7. treap树及相关算法
  8. BZOJ 2733 HNOI 2012 永无乡 平衡树启示式合并
  9. WebAppScaner
  10. Heap Sort
  11. NFS挂载异常 mount.nfs: Input/output error
  12. addEventListener解决多个window.onscroll共存的2个方法
  13. The Ultimate Productivity Hack is Saying No
  14. 牛客OI周赛7-提高组
  15. 关于HashMap多线程下环形链表的总结
  16. Python基础学习(三)
  17. IntelliJ IDEA 优化总结
  18. 【Flask】关于Flask的request属性
  19. Ubuntu 设置 sudo 开机自启动项 无需输入密码
  20. angular -- ng-class该如何使用?

热门文章

  1. ABAP ICON
  2. 转 zigbee学习笔记---Channel、PANID、发射功率及其它参数
  3. int _tmain(int argc, _TCHAR* argv[])
  4. window7防火墙无法更改某些设置,错误代码0&#215;80070422
  5. ABAP Netweaver和Cloud Foundry上的环境变量Environment Variable
  6. ORACLE的raw属性
  7. POJ 3734 Blocks (线性递推)
  8. file - 确定文件类型
  9. 2018.6.18 MyEclipse导入jquery-1.8.0.min.js等文件报错的解决方案
  10. 2017.12.6 计算机算法分析与设计---------Fibonacci数列