博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ】3670: [Noi2014]动物园
阅读量:6710 次
发布时间:2019-06-25

本文共 828 字,大约阅读时间需要 2 分钟。

题意:太水了= =

#include 
using namespace std;const int N=1000005, mo=1000000007;int n, p[N], pos[N], num[N], tot;char s[N];bool vis[N];void dfs(int x) { if(p[x]) dfs(p[x]); vis[x]=1; pos[++tot]=x; }void work(int x) { tot=0; dfs(x); for(int i=1, j=0; i<=tot; ++i) { while(pos[j+1]*2<=pos[i]) ++j; num[pos[i]]=j; }}void clr() { memset(p, 0, sizeof(int)*(n+1)); memset(vis, 0, sizeof(bool)*(n+1)); memset(num, 0, sizeof(int)*(n+1)); }int main() { int T; scanf("%d", &T); while(T--) { scanf("%s", s+1); n=strlen(s+1); int j=0; for(int i=2; i<=n; ++i) { while(j && s[j+1]!=s[i]) j=p[j]; if(s[j+1]==s[i]) ++j; p[i]=j; } for(int i=n; i>=1; --i) if(!vis[i]) work(i); long long ans=1; for(int i=1; i<=n; ++i) (ans*=(num[i]+1))%=mo; printf("%lld\n", ans); clr(); } return 0;}

  

这种题放在noi= =无语= =

大概就是随便搞搞就行辣...

转载地址:http://tzilo.baihongyu.com/

你可能感兴趣的文章
《C语言及程序设计》实践参考——翻转数组
查看>>
Eclipse Java代码折叠插件 Code Folding
查看>>
Scene,Director, Layer 和 Sprite
查看>>
C++从零实现深度神经网络之壹——Net类的设计和神经网络的初始化
查看>>
php5.4编译安装实例
查看>>
Struts1 ActionForm的使用
查看>>
在CentOS Linux上安装oracle11g-2 配置oracle11g服务
查看>>
Oracle PLSQL之cursor取得是open时的数据
查看>>
word-wrap同break-word的区别
查看>>
查找有序数组中某个数下标的范围 Search for a Range
查看>>
我的友情链接
查看>>
asp.net like 组合查询参数构造及分页
查看>>
configure选项的解释
查看>>
sqoop 导入导出
查看>>
ThinkPHP中URL模式
查看>>
JS Selection部分中文
查看>>
MongoDB数据量较大时如何构建索引--减少业务最少影响
查看>>
实用工具特别推荐Windows Memory Diagnostic
查看>>
站点到站点的×××(总公司到分公司×××)
查看>>
黄生借书说
查看>>