惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
Blog — PlanetScale
Blog — PlanetScale
F
Fortinet All Blogs
腾讯CDC
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
WordPress大学
WordPress大学
雷峰网
雷峰网
小众软件
小众软件
D
DataBreaches.Net
V
Visual Studio Blog
博客园 - Franky
IT之家
IT之家
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
博客园 - 聂微东
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
云风的 BLOG
云风的 BLOG

博客园 - nealchen

无需 Path Measure,也能轻松推出 Diffusion ELBO 🌊 LangFlow: 连续扩散语言模型,首次匹敌离散 CTMC ELBO 的另一个证明 【Remix】拆解 DDIM 论文【扩散模型加速采样】 CCSP2021游记 二元多项式求逆中的小坑 NOI2020乱搞记 [ZJOI2020]字符串 Ubuntu 20.04 工作区小记 2020省选犯傻记 AtCoder tokiomarine2020 题解 [CF1336E]Chiori and Doll Picking [JOISC2020]遗迹 积性函数求和:构造狄利克雷卷积将值域限定于powerful number [UR19B]通用测评号 另解 积性函数求和:筛法DP、洲阁筛、Min_25筛 最大权完美匹配:KM算法的优化 代数余子式和伴随矩阵 生成树计数:矩阵树定理 区间最值问题(RMQ):压位分块稀疏表
[AGC024F]Simple Subsequence Problem
nealchen · 2020-02-21 · via 博客园 - nealchen

题目链接

题意

字符集 $\Sigma=\{0, 1\}$.

给定不超过 $N$ 位的字符串集合 $S$, 求字符串满足它是 $S$ 中至少 $K$ 个串的子序列。

如果有多解,输出最长的;还有多解,输出字典序最小的。

串可以为空,保证 $0 \le N \le 20$, $K \le |S|$.

题解

先考虑如何判定字符串 $s$ 是 $t$ 的子串。

从左到右依次考虑 $s$ 的每个字符 $s_i$:

  • 若 $t$ 中不含 $s_i$, 可得 $s$ 不是 $t$ 的子串;
  • 否则将 $t$ 中第一个 $s_i$ 及之前的所有字符删去(记此处理后的字符串为 $\mathrm{trans}(t, s_i)$),继续枚举 $s_i$.

当 $s$ 的所有字符都考虑完毕时,可得 $s$ 是 $t$ 的子串。

考虑用动态规划描述上述过程,将 $\Sigma^* \times S$ 一并匹配。

因此记 $f(s, t)$ 表示 $S$ 中有多少元素按照上述操作依次匹配过 $s$ 中的字符后,余下的字符串为 $t$.

初值:对于 $t \in S$, $f(\epsilon, t)=1$, 其余为 $0$.

转移:对于 $s \in \Sigma^*, c \in \Sigma$ 以及含有 $c$ 的字符串 $t$, $f\big(sc, \mathrm{trans}(t, c)\big) \overset+\gets f(s, t)$.

关于 $s$ 的答案:$\sum_t f(s, t)$.

用二进制来压缩 $s$ 与 $t$ 并计算 $\mathrm{trans}(t, c)$.

由于 $|s|+|t| \le N$, 该算法的时空复杂度为 $O(N2^N)$.

代码链接