[JSOI2016]无界单词[动态规划、kmp]
题意
分析
对于第一问,枚举最终串最小的相同前后缀来统计答案。
由于最小的相同前后缀也是无界单词,所以可以考虑先求解子问题。
定义状态 \(f(i)\) 表示长度为 \(i\) 的串中有多少个是无界单词。
补集转化后容易得到:
\[f_i=2^i-\sum\limits_{i=1}^{\left\lfloor\frac{i}{2}\right\rfloor}f_j\times2^{i-2j}\]
对于第二问,按位确定答案。每次在前 \(len\) 位确定的情况下重新算 \(f\) 。
- 如果 \(i\le len\) :此时求出 \(next\) 数组判断。
- 否则,如果 \(j>len\) : 正常判断。
- 如果 \(j \le len\) 且 \(len\le n - j\) : 贡献为 \(f_j\times 2^{i-len-j}\)
- 如果 \(j\le len\) 且 \(len > n - j\):要满足 \(s[1\cdots len-i+j]=s[i-j+1\cdots len]\) 且 \(f_j\) 为1。
代码
[JSOI2016]无界单词[动态规划、kmp]的更多相关文章
- [JSOI2016]无界单词
题目 题意:求\(\rm border\)长度为\(0\)的\(n\)位\(0,1\)字符串个数,并求字典序第\(k\)小的那一个. 首先是计数,正向不是很好算,考虑正难则反:设\(f_i\)表示长度 ...
- 【LOJ】#2078. 「JSOI2016」无界单词
题解 用所有的方案减去有界的方案 我们规定两个前缀后缀相同时长度最短的,设长度为l,因为长度最短所以他们也是无界单词,可以递推 \(f[i] = \sum_{j = 1}^{\lfloor \frac ...
- 无界鼠标 Mouse Without Borders
最近遇到一个不爽的事,单位的办公电脑,配置低,自带笔记本电脑,屏幕小. 在给自己的笔记本电脑外接了22寸显示器以后,屏幕是舒服了很多,而且外接了微软的人机工学键鼠套装,加上自己的伪人机工学椅,舒适性确 ...
- python concurrent.futures.Threadpoolexcutor的有界队列和无界队列
1.默认是无界队列,如果生产任务的速度大大超过消费的速度,则会把生产任务无限添加到无界队列中,这样一来控制不了生产速度,二来是会造成系统内存会被队列中的元素堆积增多而耗尽. 2.改写为有界队列 cla ...
- oracle IMP-00085: 为无界导出文件指定了多个输入文件
导入按表导出的数据的时候,提示为无界导出文件指定了多个输入文件 命令如下: imp user/user@database file=e:\test.dmp 提示信息: Import: Release ...
- 有界、无界队列对ThreadPoolExcutor执行的影响
本文转载自https://blog.csdn.net/kusedexingfu/article/details/72491864 Java提供了4钟线程池: newCachedThreadPool n ...
- [转] Java 无界阻塞队列 DelayQueue 入门实战
原文出处:http://cmsblogs.com/ 『chenssy』 DelayQueue是一个支持延时获取元素的无界阻塞队列.里面的元素全部都是"可延期"的元素,列头的元素是最 ...
- mouse without borders无界鼠标使用教程
mouse without borders无界鼠标使用教程 摘自https://www.jianshu.com/p/6a0209ad03f8 老黑随笔 关注 0.4 2018.05.18 11: ...
- Java泛型(7):无界通配符<?>
无界通配符<?>很容易和原生类型混淆. 以List为例: List表示持有任何Object类型的原生List,其实就等价于List<Object> List<?>表 ...
随机推荐
- [20171107]dbms_shared_pool.pin.txt
[20171107]dbms_shared_pool.pin.txt --//昨天与别人聊天提到,如果dbms_shared_pool.pin对象,可以改变对应的chunk的类型.我自己也不确定,做一 ...
- 使用iTextSharp导出PDF
/// <summary> /// 导出至PDF /// </summary> /// <param name="dt">数据源</par ...
- SQL Server 2017数据库服务和SSMS图形化工具的的安装
第一章 SQL数据库服务的安装 1. 首先要加载sql2017数据库镜像,可以用虚拟光驱或是刻录光盘装载.执行setup.exe. 双击.exe文件 双击.exe文件 2. 选择安装-->全新s ...
- PCA与KPCA
PCA是利用特征的协方差矩阵判断变量间的方差一致性,寻找出变量之间的最佳的线性组合,来代替特征,从而达到降维的目的,但从其定义和计算方式中就可以看出,这是一种线性降维的方法,如果特征之间的关系是非线性 ...
- 使用LogPhoneUtil工具类在Android手机保存APP运行日志
最近公司的测试老是提出这样那样的bug,当然也怪自己代码写的烂,所以测试总是会把app搞崩溃,而他们那边崩溃的时候还没有日志打印,自己回来再重现有的时候还真不好复现出来,因此麻烦事就来了.为了方便查看 ...
- vue学习笔记1-基本知识
1.npm 安装node.js的时候会一起安装npm包管理器,能够解决nodejs代码部署问题,常见使用如下: 允许用户从npm服务器下载别人编写的第三方包到本地应用允许用户从npm服务器下载并安装别 ...
- UUChart的使用
一.简介 UUChart是一个用于绘制图表的第三方,尤其适合去绘制折线图.自己再做一个医院相关的项目时,需要对一周内的血压进行监控,需要绘制折线图来表示出高压.低压的走向,因此学习了一下. 二.下载地 ...
- JDBC lesson 1
https://www.mkyong.com/tutorials/jdbc-tutorials/ 1.jdbc基本概念 Java Database Connectivity (JDBC)是一套提供数据 ...
- creo5.0安装教程(图文详解)
PTC公司最近发布了Creo 5.0正式版 ,作为最具其革命性的新一代产品设计软件,其所提供专业的二维和三维设计设计,能帮助企业和公司进行产品生命周期管理(PLM)和制定服务管理解决方案.Creo5. ...
- C#常见委托のdelegate定义,Func,Action,Predicate总结
委托,顾名思义,就是让其他代理,本质就是为具有共性方法组定义一个方法模板:(交流可以加qq群:435226676) 委托常见的方式有一般委托显示定义,Func<T,TResult> (T, ...