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

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

容易发现一个字符串的限制就相当于如果出现了其中一个字符 \(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. Codeforces 450E:Jzzhu and Apples(构造,数学)

    E. Jzzhu and Apples time limit per test: 1 seconds memory limit per test: 256 megabytes input: stand ...

  2. CHARACTERIZING ADVERSARIAL SUBSPACES USING LOCAL INTRINSIC DIMENSIONALITY

    目录 概 主要内容 LID LID估计 算法 实验 1 2 3 4 5 Ma X, Li B, Wang Y, et al. Characterizing Adversarial Subspaces ...

  3. 微信小程序-自定义菜单导航(实现楼梯效果)

    设计初衷 在开发页面时,往往需要实现,点击页面的导航菜单页面滚动到相应位置,滚动页面实现菜单选项的高亮.在html开发中,我们可以用到a标签锚点实现,jq的动画相结合实现类似效果.在框架中vant U ...

  4. pytest之 fixture 实现机制

    一.相同测试数据存放优化 在讲 fixture 实现机制之前,插入一段内容 上次有个小伙伴问我说,类似下面的用例代码情况,每条测试用例的数据都一样的,我们可以怎么进行优化吗? 当然是可以的 其实我们可 ...

  5. Java Swing设计简单商品信息管理系统(java swing+mysql+eclipse)

    一.概述 为了管理好商店库存信息,提升店铺管理工作效率,结合实际工作需要,设计和开发本系统,主要用于商店商品信息维护出入库等.包含商品库存信息查看.商品信息修改,新增商品信息,删除信息等功能. 二.功 ...

  6. Android 悬浮窗

    悬浮窗是一种比较常见的需求.例如把视频通话界面缩小成一个悬浮窗,然后用户可以在其他界面上处理事情. 本文给出一个简单的悬浮窗实现.可缩小activity和还原大小.可悬浮在其他activity上.使用 ...

  7. vue3获取当前路由

    正解 使用useRouter: // router的 path: "/user/:uid" <template> <div>user</div> ...

  8. C#中的记录(record)

    从C#9.0开始,我们有了一个有趣的语法糖:记录(record) 为什么提供记录? 开发过程中,我们往往会创建一些简单的实体,它们仅仅拥有一些简单的属性,可能还有几个简单的方法,比如DTO等等,但是这 ...

  9. Microsoft HoloLens 开发(2): 运行Hello World

    1.下载 MixedRealityToolkit-Unity (混合现实工具包) 什么是 MixedRealityToolkit-Unity ? 一个脚本和组件的集合,加速针对微软全息和Windows ...

  10. 解构插槽 Prop

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <link rel ...