【笔记】计数问题选讲 2025.1.6
笔记 2025.1.6:计数问题选讲-徐哲晨
- 笔记 2025.1.6:计数问题选讲-徐哲晨
- P4463 [集训队互测 2012] calc(拉插优化 dp)
- P4484 [BJWC2018] 最长上升子序列(状压 dp)
- ARC138E - Decreasing Subsequence(构造双射)
- P5400 [CTS2019] 随机立方体(二项式反演)
- AGC064D - Red and Blue Chips(构造充要条件)
- CF1942G. Bessie and Cards(反射容斥)
- CF1874F. Jellyfish and OEIS(容斥、构造双射)
- P8478 「GLR-R3」清明(乘法分配律)
- P4931 [MtOI2018] 情侣?给我烧了!(加强版)(错排)
- qoj 5357. 芒果冰加了空气(刻画)
- P10104 [GDKOI2023 提高组] 异或图(数位 dp、容斥)
- Baekjoon 23510 Wise man(数位 dp)
- (skipped)P5417 [CTSC2016] 萨菲克斯·阿瑞
- CF1456E XOR-ranges(数位 dp、独立性)
- (skipped)CF1081G Mergesort Strikes Back
- CF1707D Partial Virtual Tree
- (未完成)CF1647F Madoka and Laziness
- CF1349F1 Slime and Sequences (Easy Version)(构造映射、欧拉数)
- P5359 [SDOI2019] 染色
- (未完成)P5320 [BJOI2019] 勘破神机
- P9108 [PA2020] Malowanie płotu
- P10681 [COTS 2024] 奇偶矩阵 Tablica
P4463 [集训队互测 2012] calc(拉插优化 dp)
先简单地写一个二维的 dp 方程。然后发现因为所涉及的操作只有平移、前缀和、点乘一次函数的操作,我们将 dp 的某一行看成一个代数式
P4484 [BJWC2018] 最长上升子序列(状压 dp)
有两种求 LIS 的方法,应该选哪一种?如果选择
发现瓶颈其实在于要记下选过的数,这个东西记完之后就没有什么额外空间进行操作了。所以我们改从值域考虑这个问题,也有两个角度,第一种是从左往右扫,每次从值域中间、序列末尾插入;第二种是从下往上扫,每次从值域末尾、序列中间插入。做到这里两个角度已经没有什么区别,你对 dp 数组取前缀 max 再差分就会发现其值域变为
ARC138E - Decreasing Subsequence(构造双射)
当你终于将题目读对的时候会发现这个限制相当自由,如果只是从阶梯的形状下手会极为失败。对此,由题解知,我们将
P5400 [CTS2019] 随机立方体(二项式反演)
可能的第一个想法是:立方体中的最大值是极大点,将其提取出并删除它所在的三个方向的平面。然后选择下一个极大点,就会发现刚才删去的东西会对下一个有一点影响。那么我们应该从小到大枚举极大点吗?有可能,可以尝试一下,发现这样做就舒服很多。后面的事情就是,把题改成方案数,然后写出式子,消去若干阶乘。最后只需要惊讶地发现刚才做的事情只能保证有至少
AGC064D - Red and Blue Chips(构造充要条件)
计数多少个本质不同的答案序列,太难了!有一个较为通用的套路是考虑怎么判定答案是否可以被构造。
写一下这题的过程,你从右往左扫描原串,扫到
现在问题就变成了:在原串上从右到左统计每个
CF1942G. Bessie and Cards(反射容斥)
可能是转格路计数后做反射容斥,而事实就是这样,因为确定起点、终点、长度后,走过的
CF1874F. Jellyfish and OEIS(容斥、构造双射)
上来就容斥,枚举一个区间的集合表示这些区间满足题目那个鬼限制。然后可以发现,两个有交的区间(
P8478 「GLR-R3」清明(乘法分配律)
题目大概能表述为,确定具体流水方案后,求一堆多项式的乘积。直接施乘法分配律,变成确定方案后每个位置还要选一个雨水,再独立成确定某个阶梯的水流到某个子集的雨水的值的乘积与没流到子集中的雨水的方案数的乘积。使用生成函数计算可得,或者使用 组合意义 推导可得一个组合数。
然后就交给状压 dp 了。根号分治,
P4931 [MtOI2018] 情侣?给我烧了!(加强版)(错排)
直接推导 二项式反演 比较简单,然后发现只能过简单版。所以你考虑使用 NTT 优化,发现过不去,所以只能弃暗投明,使用 Elegia 法 或者别的什么东西可以推导出二项式反演对应的系数,也就是错排公式。
错排,还是太有用,直接省略容斥部分。
qoj 5357. 芒果冰加了空气(刻画)
你发现两个连通块对应的点分树合并时,假如中间那条边是
P10104 [GDKOI2023 提高组] 异或图(数位 dp、容斥)
你发现这题
Baekjoon 23510 Wise man(数位 dp)
你首先发现这个题在 QOJ 没有,很生气,然后也不太会做。肯定有一个想法是从低到高地去顶
有一个循环的问题,你发现发生
(skipped)P5417 [CTSC2016] 萨菲克斯·阿瑞
skipped
CF1456E XOR-ranges(数位 dp、独立性)
无限制的位可以轻松删掉,我们要不对每个数处理出
发现每一位是独立的,很诱人,我们删掉状态里的两个
(skipped)CF1081G Mergesort Strikes Back
skipped
CF1707D Partial Virtual Tree
可以给每个节点分配一个时间戳
然后就 dp。具体看一下限制是
(未完成)CF1647F Madoka and Laziness
CF1349F1 Slime and Sequences (Easy Version)(构造映射、欧拉数)
你可以用任何方法推断出好序列的数量是
首先我们可以通过暴力算出长度为
的好序列数量为 ,这就指引我们将好序列与排列作映射。
你从小到大枚举数字,将这种数字的出现位置从后往前地放入一个排列的末尾,直到最后有一个长度为
只需要讨论数字
P5359 [SDOI2019] 染色
auto sqr = [&](mint x) { return x * x; };
mint coe[7][7] = {
{0, 0, 1, 1, 1, 0, 1},
{0, 0, c - 2, c - 3, c - 2, c - 2, c - 3},
{1, 1, 0, 0, 0, 1, 1},
{c - 2, c - 3, 0, 0, c - 2, c - 2, c - 3},
{c - 2, c - 2, 0, c - 2, 0, c - 3, c - 3},
{0, c - 2, c - 2, c - 2, c - 3, 0, c - 3},
{mint(c - 2) * (c - 3), sqr(c - 3), mint(c - 2) * (c - 3), sqr(c - 3),
sqr(c - 3), sqr(c - 3), c - 3 + sqr(c - 4)},
};
g[0][0] = 1;
for (int i = 1; i <= n; i++) {
for (int j = 0; j < 7; j++) {
for (int k = 0; k < 7; k++) g[i][j] += g[i - 1][k] * coe[k][j];
}
}
这题太难写了,你首先去按列做 dp,记下这一列的两个颜色,然后去转移,理论可以进行转移,但问题主要是状态数太多。想法是加速相邻两个非空列之间的转移,我们来看看有多少种本质不同的非空列,发现:
有以下
a..a a..a a..b a..b a..c a..c a..c
b..b b..c b..a b..c b..a b..b b..d
要求
我们预先处理这些系数,记
那么 ac
(右侧列)为例,有以下
ab -> ac
: ,因为有相等,非法了。ac -> ac
: ;ba -> ac
: ,ba
是固定的,一定合法了;bc -> ac
:注意现在我们决策的是bc
这一列当中的 ,要求这个 ,同时还要知道那个bc
列的 ,其左侧的不等限制已经被左侧满足,不需要再次考虑, 只要 就能与它左边不等。所以这里的系数是 ( 是颜色数),分别与 和ac
中的 不等。- ……之后的情况都没什么好说的了。
这些系数属于理论可写,实际难写的,写完了之后就可以做 dp 了,反正就是枚举状态然后转移,然后可以写出一个 7K 的 dp。
然后套用 P5358 [SDOI2019] 快速查询 的数据结构即可完成本题。
(未完成)P5320 [BJOI2019] 勘破神机
P9108 [PA2020] Malowanie płotu
这个题首先要读懂题意,然后比较简单,直接优化 dp 即可。因为与
P10681 [COTS 2024] 奇偶矩阵 Tablica
这题,首先要往一个合理的方向想。根据题解(COTS/CETS 2024 奇偶矩阵 Solution - 洛谷专栏),我们枚举
这里
本文来自博客园,作者:caijianhong,转载请注明原文链接:https://www.cnblogs.com/caijianhong/p/18659474
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?