2025 vertigo - 杂题选讲 - hhz
*表示没写 / 懒得写。有些非常蠢的题删掉了。
ppt 里有很多找不到 source 的题目,没有记下来。
[0] QOJ3301 Economic One-way Roads
- 有向图强联通 能被耳分解
- 无向图边双联通 能被耳分解
- 无向图点双联通 能被开耳分解
[3] [APIO2022] 游戏
可以对每个非关键点 维护 ,表示 的点都可以到达 , 可以到达所有 的点。每次暴力更新,均摊是 的。看起来没什么进一步优化可能了,注意到我们只关系是否有点 ,所以没必要更新的时候就不用更新。对 分块:如果更新之后两个点在一个块里,那么更新具体编号,,否则只要更新块编号。把分块改成线段树就是 。
[0] [THUPC 2024 决赛] 朔望
首先对 二项式反演,直接枚举 算贡献,发现是一个分数 的形式,直接维护所有质因子,求的时候双指针。
[2]【UNR #6】稳健型选手
chain:转化成括号序 会 发现是容易两端拓展的结构 二区间并。
转化为每次询问一个长度为偶数的区间 ,定义一个括号串 的价值为 ,求所有合法括号串中最大的价值。对于 的部分分,有一个很经典的反悔贪心:每次先往后加两个 ,然后把前面价值最小的一个 改成 ,而且从后往前做也可以,每次加 就好了。这种支持两端拓展的区间信息一般用莫队或者分治结构维护,直接上二区间并。每次合并的时候一定是把左区间部分 换成 ,并把右区间同样数量的 换成 ,主席树,。
[0] 【UNR #6】小火车
这个 很可疑,发现问题就是找到两个和相同的子集,meet in the middle 一下,二分和并双指针就对了,。
[1] 【UNR #6】面基之路
chain: 个人分别走不好做,统一 枚举边
题目和所有人都走到一个点等价,因为相遇之后可以跟着第一个人走。枚举边 , 个关键点按照 排序,肯定是一个前缀从 ,剩下的 ,。
[1] QOJ1875 Nein
分类讨论 的位数并不好做。倒过来,求第 大的 的倍数,且没有 。前面判定的条件是把数划分成 个一段,和是 的倍数。按位确定答案,同时枚举和 ,其中 是答案划分段数的上限。最后是一个简单的 dp,因为严重跑不满,所以能过。
[1] [IOI 2022] 无线电信号塔
如果我们选出了塔序列 ,只要判断 内相邻塔的合法性即可。容易想到算出一个点 最近的可以传输信号的塔 (),显然 成两两包含结构。那么如果对区间包含结构建出树,叶子节点的个数就是答案。一个区间 是叶子的条件是 ,于是对于每个点算出最大合法的 ,剩下就是一个主席树能解决的了。
有个特殊情况:可能在整个序列中的区间 内的最小值可能 ,但是询问区间刚好把最小值砍掉了。分类讨论一下这种数最多只有两个,分别是前 / 后缀最小值中最小的不合法的数,倍增特判。
[1] QOJ8047 DFS Order 4
套路的,把 dfn 序给树形态做一个单射,那么树需要满足对于任意一个点 和他的下一个兄弟 ,令 表示 的最后一个儿子,需要满足 ,暴力设计状态 表示大小为 的树,根节点最后一个儿子编号为 的方案,是个二维卷积,。
抽象一下,其实我们在进行一个 DAG 拓扑序计数,瓶颈就在于上面的特殊边(如下图 1 为树,2 为拓扑序限制)。这个大家都很熟悉了,直接容斥掉,变成反向边或者没有边。剩下的就是一棵树,树的拓扑序是 。

令 表示大小为 的树,其中 的最后一个儿子有额外的边连着一个大小为 的树(蓝边红边都可以),此时所有除根节点之外节点的贡献,,转移顺序是加父亲或者加一个最左边的儿子,所以加儿子的时候,儿子 必须 ,否则不合法。
NOIP 之后补。