当前位置: 首页 > news >正文

bzoj 3670 [Noi2014]动物园

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3670

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

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

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

注意输出换行。

#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using 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

相关文章:

  • 开源PaaS Rainbond v3.6.0正式发布,Service Mesh开箱即用
  • caffe源码学习
  • 切图常用的布局和效果
  • signalr使用websocket报500错误
  • 获取免费代理推荐
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • inno安装
  • Vue命令行工具vue-cli
  • A-Treepath//dfs
  • OO第四次博客
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • Spring Boot模板引擎 (三)
  • js上传
  • Quagga 配置笔记
  • libstdc++.so.6: version `GLIBCXX_3.4.21'
  • 【译】JS基础算法脚本:字符串结尾
  • [case10]使用RSQL实现端到端的动态查询
  • AWS实战 - 利用IAM对S3做访问控制
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • classpath对获取配置文件的影响
  • CSS 三角实现
  • Laravel 实践之路: 数据库迁移与数据填充
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • vue-cli3搭建项目
  • 阿里云应用高可用服务公测发布
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 大快搜索数据爬虫技术实例安装教学篇
  • 动态规划入门(以爬楼梯为例)
  • 聊聊redis的数据结构的应用
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 字符串匹配基础上
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (3)(3.5) 遥测无线电区域条例
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (三)docker:Dockerfile构建容器运行jar包
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • **PHP二维数组遍历时同时赋值
  • .apk文件,IIS不支持下载解决
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .cn根服务器被攻击之后
  • .NET 8.0 发布到 IIS
  • .NET Core Web APi类库如何内嵌运行?
  • .NET MVC 验证码
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET6实现破解Modbus poll点表配置文件
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • @Pointcut 使用
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [ solr入门 ] - 利用solrJ进行检索