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

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

容易发现一个字符串的限制就相当于如果出现了其中一个字符 \(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. 亲测:三个值得练手的Java实战项目

    测试奇谭,BUG不见. 大家好,我是谭叔. 一提到编码,很多小伙伴便感到头疼,特别是半路转行的小伙伴或者没有系统学习过计算机基础的小伙伴. 对于想学而不知道怎么学的小伙伴,我可以分享下我的策略: 刷一 ...

  2. Java Swing 如何设置图片大小

    如下两行代码搞定: Image image = new ImageIcon("Img/ackground.jpg").getImage();// 这是背景图片 .png .jpg ...

  3. Python两处容易理解错误的设计

    函数内部修改可变类型的变量时不会视作局部变量(除非函数内有该变量的赋值运算符),因为如果做局部变量处理则修改语句势必报错,此处的理解不会有歧义: s = 'test' d = {True:1,2:'S ...

  4. SpringCloud创建Config Client配置读取

    1.说明 本文详细介绍配置中心客户端使用方法, 即Config Client到Config Server读取配置, 这里以创建Config Client服务为例, 基于已经创建好的Config Ser ...

  5. vim - 显示不可见字符(:set list)

    默认情况下,vim是不会显示space,tabs,newlines,trailing space,wrapped lines等不可见字符的.我们可以使用以下命令打开list选项,来显示非可见字符: : ...

  6. windows更改pip源(可用)

    中国科学技术大学 : https://pypi.mirrors.ustc.edu.cn/simple 清华:https://pypi.tuna.tsinghua.edu.cn/simple 豆瓣:ht ...

  7. Vue-cli代理解决跨域问题

    使用vue-cli调接口的时候,总是会出现垮与问题,因为vue的localhost与访问域名不一致导致.而这一点,开发者显然也想到了,故而在vuejs-templates,也就是vue-cli的使用的 ...

  8. Go语言系列之标准库fmt

    fmt包实现了类似C语言printf和scanf的格式化I/O.主要分为向外输出内容和获取输入内容两大部分. 向外输出 标准库fmt提供了以下几种输出相关函数. Print Print系列函数会将内容 ...

  9. HDU 1863 畅通工程 (并查集)

    原题链接:畅通工程 题目分析:典型的并查集模版题,这里就不详细叙述了.对算法本身不太了解的可以参考这篇文章:并查集算法详解 代码如下: #include <iostream> #inclu ...

  10. MySQL提权之udf提权(获得webshell的情况)

    什么是udf提权? MySQL提供了一个让使用者自行添加新的函数的功能,这种用户自行扩展函数的功能就叫udf. 它的提权原理也非常简单!即是利用了root 高权限,创建带有调用cmd的函数的udf.d ...