[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<?>表 ...
随机推荐
- android开发笔记:Handler、Looper、MessageQueen、Message的关系
一.什么是handler? 注:线程分为主线程(主线程又叫UI线程,只能有一个主线程)和子线程(可以有多个)Handler只能在主线程里运行 handler是Android给我们提供用来更新UI的一套 ...
- Python:GUI之tkinter学习笔记1控件的介绍及使用
相关内容: tkinter的使用 1.模块的导入 2.使用 3.控件介绍 Tk Button Label Frame Toplevel Menu Menubutton Canvas Entry Mes ...
- Spring Boot 技术总结
Spring Boot(一):入门篇 Spring Boot(二):Web 综合开发 Spring Boot(三):Spring Boot 中 Redis 的使用 Spring Boot(四):Thy ...
- C# 异步编程1 APM 异步程序开发
C#已有10多年历史,单从微软2年一版的更新进度来看活力异常旺盛,C#中的异步编程也经历了多个版本的演化,从今天起着手写一个系列博文,记录一下C#中的异步编程的发展历程.广告一下:喜欢我文章的朋友,请 ...
- WebDriverTest
using OpenQA.Selenium.Firefox; using System; using System.Collections.Generic; using System.Linq; us ...
- Python基础知识:字典
1.字典中键-值为一对,keys()返回一个列表,包含字典中所有键,values()返回所有值 favorite_languages ={ 'jack':"python", 'al ...
- centos7下安装docker(3.3创建镜像--修改dockerfile)
1.我们在制作dockerfile的时候可能有些命令无法执行,导致镜像无法创建成功,这时我们可以修改dockerfile,从而达到我们的目的 查看Dockerfile内容 创建新的镜像,失败 Dock ...
- tomcat7的catalina.sh配置说明
捞财宝项目8G内存tomcat7的配置JAVA_OPTS="-Xms1024m -Xmx2048m -XX:PermSize=128M -XX:MaxNewSize=2048M -XX:M ...
- 【转】wampserver2.5 apache2.4.9配置https 图文
注: 我的wamp环境是2.5版本,apache是2.4.9 装在本地C:wamp 操作系统windows10 1.进入wamp->bin->apache->apache2.4. ...
- PHP中使用Elasticsearch
PHP中使用Elasticsearch composer require elasticsearch/elasticsearch 会自动加载合适的版本!我的php是5.6的,它会自动加载5.3的ela ...