CSP-S 2023 模拟赛选
LGR-164-Div.2 B. 合并序列
考虑我们实际上仅仅在钦定 \((u,v)\) 不切断时需要通过 \(v\) 所在子树的异或和这个 状态 来更新 \(u\) 对应异或和的状态,此时状态内每一位都是独立的。所以直接拆位仍然能够转移,得到 \(f_{i,j,0/1}\) 表示节点 \(i\) 子树内第 \(j\) 位异或和确定情况下的答案。
而在钦定 \((u,v)\) 切断时,根本不管 \(v\) 子树内的信息。于是直接设 \(g_i=\sum_j f_{i,j}\),直接通过 \(g_v\) 转移到 \(f_{u,j,a_u \operatorname{and} 2^j}\) 即可。
Xinyoudui SCP-S 2023 C. nέο κόsmo
一眼看上去斯坦纳树,但是 \(c\) 过大了,且这个题 钦定走一个(不一定简单)环 而非树。对于 枚举起点,强制走环 的问题,有一个对原图的转化:
Trick:建立 二层分层图,\(\forall u\) 连有向边 \((u_1,u_2)\),则起点为 \(S\) 的 环 相当于要求 \(S_1\) 到 \(S_2\) 的 路径。
然后因为 \(c\) 虽然很小但也是 \(20\),所以在原图上跑肯定不行,需要考虑缩成一个 \(O(c)\) 个点的图来状压 DP。首先枚举起点。
我们考虑新图的边权 \(w(u,v)\) 即为原图上 \(u\) 到 \(v\) 不经过起点以外(因为起点不额外贡献所以无所谓)关键点的最短路。在刚刚建立的分层图上,仅保留起点的跨层边,跑一轮最短路。这部分因为枚举起点的缘故,是一个 \(O(nc\log n)\)。
然后在新图上跑状压 DP,类似斯坦纳树的方式松弛即可。做到一个 \(O(nc\log n+2^cc^2)\)。
Nowcoder SCP-S 2021 C
众所周知数位 DP 字典序第 \(k\) 大方案的求,有个叫做试填法的典型做法。但是仔细思考,它其实适用于 \(k\) 很大 如 \(10^{18}\) 级别,而预处理 方案数 的 DP 效率较高的情况。
而对于 \(k\) 很小 的情形,我们发现根据 DP 的本质,可以类比为 DAG 上 \(k\) 短路 的做法。这个东西有个好处是,只需要实现 求最大字典序方案 就多半可以依次求次大直到 \(k\) 大。

浙公网安备 33010602011771号