专栏文章

小战NOIP2024

个人记录参与者 5已保存评论 4

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
4 条
当前快照
1 份
快照标识符
@miniay99
此快照首次捕获于
2025/12/02 02:52
3 个月前
此快照最后确认于
2025/12/02 02:52
3 个月前
查看原文

A

贪心的正确性是显然的,至此思维难度结束。
代码的细节主要在于两个字符串自由区间的交错问题,大概写+调了30min。

B

注意到 v2v\ge 2,因此对于一个已知的 {(ai,bi)}\{(a_i,b_i)\},最优策略一定是尽可能躲开 (a,b)(a,b) 的限制。
所以一个 {(ai,bi)}\{(a_i,b_i)\} 不合法,当且仅当存在从 (ci,di)(c_i,d_i)(ci+1,di+1)(c_{i+1},d_{i+1}) 的链接,且链接过去的值不满足条件。
随便数一数就行。写起来比 A 快。

C

想的最久的一题。
构造一个图 GG,点为原树的边,并且每个点对应的边集构成一个完全图,那么问题转化为在图 GG 上定根的 dfs 树计数。
一个重要的观察是 dfs 树没有返祖边,因此每一个边集完全图在 dfs 树上一定呈现为一条链,而链与链之间的交点是固定的。至此再把问题转化为,对于每一条链都钦定一个顺序的方案数。
考虑定根的影响。发现定根意味着对于每一个边集完全图,其对应的链的一个端点会由根确定。具体地,若根为 xxxx 子树内的边集对应的链,其中一端一定为父边;子树外边集对应的链,其中一端一定为走到 xx 经过的边。
至此定根就非常好算了,其实就是 (deg1)\prod (deg-1)。对于多定根的情况考虑容斥,即求 (1)Sf(S)\sum (-1)^{|S|}f(S)
进一步观察,SS 内的点一定要位于一条简单路径上,否则一定存在一个边集被钦定三个端点;而对于一个简单路径上的关键点,其有效约束点只有简单路径的两个端点。对于该点集 SSf(S)=ipath(degi2)i∉path(degi1)f(S)=\prod_{i\in \text{path}}(deg_i-2)\prod_{i\not\in\text{path}}(deg_i-1)
因此我们设 fx,0/1f_{x,0/1} 表示子树 xx 内选择了一条链,链上有奇数/偶数个关键点的方案数的 (deg2deg1)\sum (\prod\frac{deg-2}{deg-1}),转移是简单的。
时间复杂度 O(n)O(n)

D

NOIP D<C 是什么神秘仪式吗。
不会那个神秘结论,想的时候走了挺多弯路,但传统DS切入点非常有限,还是做得出来。
考虑枚举 lcalca 处的点 xx,那么 xx 的贡献是若干个在子树节点未出现的极长编号连续段。
注意到这个极长编号连续段的个数是 O(n)O(n) 的,因为段与段无交,可以看作对 nn 个点建树,总段数 2n1\le 2n-1
一个段 [L,R][L,R] 对一组询问有贡献,当且仅当 max(L,ql)+qk1min(R,qr)\max(L,ql)+qk-1\le \min(R,qr)
注意到 ql+qk1qrql+qk-1\le qr 是恒成立的,因此上式是一个三维偏序,cdq分治即可。
时间复杂度 O(nlog2n)O(n\log^2n)

总结

我他妈为什么最后一战是 NOIP2023 而不是这个 NOIP2024????

评论

4 条评论,欢迎与作者交流。

正在加载评论...