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

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

题目:

重点是记录一个cnt数组表示自己这个串能匹配几次。如果记录的是不包含自己第一次匹配上的那种(如代码),要注意判断。

学习到了优美写法。就是用两个全局变量的指针而不是每次都 int k=nxt[ i-1 ]。

  而且那个while写得也很好!这样就不用特别判断没匹配上的情况了。

注意输出换行。

#include
#include
#include
#define ll long longusing namespace std;const int N=1e6+5;const ll mod=1e9+7;int T,len,nxt[N],cnt[N],k,ct;char a[N];ll sum;int main(){ scanf("%d",&T); while(T--) { sum=1;k=ct=0;// memset(cnt,0,sizeof cnt); scanf("%s",a+1);len=strlen(a+1); for(int i=2;i<=len;i++) { ll nm=0; while(k&&a[k+1]!=a[i])k=nxt[k]; if(a[k+1]==a[i])k++; nxt[i]=k;if(k)cnt[i]=cnt[k]+1;//if k while(ct&&a[ct+1]!=a[i])ct=nxt[ct]; if(a[ct+1]==a[i])ct++; while(ct>(i>>1))ct=nxt[ct];// if(ct)nm=cnt[ct]+1;//if ct (sum*=nm+1)%=mod; } printf("%lld\n",sum); } return 0;}

 

转载于:https://www.cnblogs.com/Narh/p/9197078.html

你可能感兴趣的文章
windows下,下载pip安装
查看>>
nginx反向代理中proxy_set_header 运维笔记
查看>>
jQuery操作元素的class属性
查看>>
关于idea新建子目录时往父目录名字后叠加而不是树形结构的解决方法(转)
查看>>
HttpURLConnection和HttpClient的区别2(转)
查看>>
第5条:避免创建不必要的对象
查看>>
单元测试利器Mockito框架
查看>>
java反射
查看>>
有赞业务对账平台的探索与实践
查看>>
leetcode讲解--824. Goat Latin
查看>>
深入解析Node.js中的Async和Await函数
查看>>
Ubuntu 下如何安装与卸载软件 ( 一 :GUI版)
查看>>
07_01_定义加载器(Webpack Book)
查看>>
Let's encrypt 通配域名DNS验证方式的证书自动更新
查看>>
PHP 框架学习(二):Laravel
查看>>
总结常见的违背Rest原则的接口设计做法
查看>>
JAVASCRIPT中THIS指的是什么?
查看>>
LLVM3.8停止了旧Windows版本,取消Autoconf,改进Clang
查看>>
DevOps实战:Graphite监控上手指南
查看>>
SSPL的MongoDB再被抛弃,GUN Health也合流PostgreSQL
查看>>