考虑什么样的串是合法的。

直接考虑比较抽象,考虑具象化这个问题。

容易发现一个字符串的限制就相当于如果出现了其中一个字符 \(a_i = c\),那么 \(s\) 中 \(c\) 前 \(i - 1\) 个字符必然要为:\(a_1 \sim a_{i - 1}\),\(c\) 后的 \(n - i\) 个字符必然要为 \(a_{i + 1} \sim a_n\)。

这个限制比较严格,可以放宽为:对于每个在串 \(a\) 中出现过的字符 \(a_i = c\),其前面一个字符必为 \(a_{i - 1}\) 后面一个字符必为 \(a_{i + 1}\)。

此时我们对字符集中的每个字符建点,对于任意的一个串 \(a\) 我们连边 \(\forall i \in [1, n - 1], a_i \to a_{i + 1}\)。

因此 \(s\) 可以看作是在这张图上 不断地 选一个入度为 \(0\) 的点走到一个出度为 \(0\) 的点的过程。

那么显然要分不同的(弱)连通块考虑,容易发现一个(弱联通块)是可选的当且仅当:

  • 所有点的入度和出度均不超过 \(2\)。

  • 不存在环。

因此满足上述两条限制的连通块只能是一条往一个方向的链。

将所有可行的链找出来,问题可以转化为:

有 \(n\) 种物品,每种物品有长度 \(l_i\)(满足 \(\sum l_i = k\)),且每个物品有无限个,每次选择一个物品放在序列末端,问构成长度为 \(m\) 的序列有多少种?

考虑 \(\rm dp\),令 \(f_i\) 为构成长度为 \(i\) 的序列的方案数,朴素转移是 \(\mathcal{O}(nm)\) 的。

注意到本质不同的 \(l_i\) 至多只有 \(\sqrt{k}\) 种,于是可以将这 \(\sqrt{k}\) 种一起转移,复杂度 \(\mathcal{O}(m\sqrt{k})\),已经可以通过本题。

于此同时,我们将本质不同的 \(l\) 看作是一种后有:\(f = f \times l\),因此可以做半在线卷积 / 求逆即可,复杂度 \(\mathcal{O}(n \log ^ 2n) / \mathcal{O}(n \log n)\)。

CF1574F Occurrences的更多相关文章

  1. 2021record

    2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...

  2. [Java Web]Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors

    手机客户端向服务器提交Http请求时,Tomcat抛出错误: 十二月 31, 2014 2:32:45 下午 org.apache.coyote.http11.AbstractHttp11Proces ...

  3. eclipse使用tips-Toggle Mark Occurrences 颜色更改

    Toggle Mark Occurrences这个功能非常好用,能把选中的方法/变量在本类中全部出现的地方高亮显示,是一个非常实用的功能.但是默认颜色是灰色,非常毁眼.可以通过下面的设置更改为自己喜欢 ...

  4. [geeksforgeeks] Count the number of occurrences in a sorted array

    Count the number of occurrences in a sorted array Given a sorted array arr[] and a number x, write a ...

  5. WordLight: highlights all occurrences of a selected text for VS2008

    https://visualstudiogallery.msdn.microsoft.com/ad686131-47d4-4c13-ada2-5b1a9019fb6f About This is a ...

  6. org.apache.jasper.JasperException: - Page directive must not have multiple occurrences of pageencoding

    最近写jsp遇到一系列的低级错误,记录下来权当前车之鉴吧. 错误提示: SEVERE: Servlet.service() for servlet jsp threw exceptionorg.apa ...

  7. further occurrences of HTTP header parsing errors will be logged at DEBUG level.错误

    今天进行项目测试的时候出现了further occurrences of HTTP header parsing errors will be logged at DEBUG level.错误,查了半 ...

  8. jsp include 报错:illegal to have multiple occurrences of contentType with different values (old: text/html; charset=UTF-8, new: text/html; carset=UTF-8)

    严重: Servlet.service() for servlet jsp threw exception org.apache.jasper.JasperException: /jsp.jsp(1, ...

  9. Segment Occurrences(string find函数)

    Description You are given two strings s and t, both consisting only of lowercase Latin letters.The s ...

随机推荐

  1. 如何理解 TS 类型编程中的 extends 和 infer

    extends extends 在TS类型编程中用法(T extends U),表示 T 中的某些在 U 里面,比较难描述,用法如下: T extends U ? X : Y 分为两种情况理解更直观一 ...

  2. Feign动态调用,结合Ribbon

    代码如下,三种方法: import org.springframework.beans.factory.annotation.Autowired;import org.springframework. ...

  3. Consistency Regularization for GANs

    目录 概 主要内容 Zhang H., Zhang Z., Odena A. and Lee H. CONSISTENCY REGULARIZATION FOR GENERATIVE ADVERSAR ...

  4. go语言 装饰器模式

    package decoratorimport ( "fmt" "reflect")func Decorator(decoPtr, fn interface{} ...

  5. centos一步一步搭建tendermint

    一.必要条件 1.安装go 请根据官方文档安装:https://golang.org/doc/install 要特别注意的是: /etc/profile 添加以下内容: export GOPATH=/ ...

  6. 初识python 之 爬虫:爬取某网站的壁纸图片

    用到的主要知识点:requests.get 获取网页HTMLetree.HTML 使用lxml解析器解析网页xpath 使用xpath获取网页标签信息.图片地址request.urlretrieve ...

  7. Nginx日志通过Flume导入到HDFS中

    关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新) flume上传到hdfs: 当我们的数据量比较大时,比如每天的日志文件达到5G以上 使用ha ...

  8. 51 Nod 1006 最长公共子序列(LCS & DP)

    原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1006 题目分析: 首先先知道LCS问题,这有两种: Long ...

  9. 联盛德 HLK-W806 (十三): 运行FatFs读写FAT和exFat格式的SD卡/TF卡

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

  10. 顺序表-Go语言实现

    简单理解就是数组: 优缺点及使用场景 优点: 随机访问,在O(1)时间内找到第i个元素: 数据表中的数据是连续存放的,因此只要知道数据表中第一个元素的地址,那么后面的数据元素的地址就可以马上算出来. ...