NOI2023 补题小记

发布时间 2023-11-24 07:42:38作者: ckain

Day1 T1 方格染色

\(t=1/2\) 的操作可以维护矩形面积并.当 \(n,m \le 1e5\) 时考虑直接将每条斜线拆成 \(x_2-x_1\) 个矩形.所以朴素的矩形面积并即可通过 \(95\%\) 的测试数据.

\(n, m \le 1e9\) 时,先沿用之前的思路将 \(t=1/2\) 的操作覆盖的面积求出来.然后考虑斜线.首先判掉位于同一条直线上并且有交集的斜线,将它们连接成一条.这时任意两斜线和斜线或斜线和直线之间都至多仅存在一个交点.

顺序考虑每条斜线——先将其长度计入答案,再在考虑从答案中去掉它和 \(t=1/2\) 的操作及之前的斜线的交点.

Day1 T2 桂花树

由于限制 1 保证了 \(T'\) 选点集 \([1,n]\cup Z\) 作为关键点求出的虚树等于 \(T\),构造 \(T'\) 的过程可以视作在 \(T\) 上插入 \(m\) 个新点(每个点可以作为叶子插入或者插入到一条边的中间).

考虑沿用虚树来描述限制 2.发现限制 2 可以描述成:\(\forall i \in [1, m]\)\(T'\) 选点集 \([1, n+i]\cup Z\) 求出的虚树不能包含编号 \(>n+i+k\) 的节点.

不妨顺序插入节点 \(n+1 \sim n+m\).设当前要插入节点 \(x\).若作为叶子插入,则有 \(x-1\) 种选法;若插入到某条边的中间,则有 \(x-2\) 种选法.最后还有一种情况,即作为某条边中间编号大于自己的节点的儿子,有 \(x-2\) 种选法,这种情况下会诞生一个以后需要填补的空位.考虑 \(k \le 10\),我们可以将空位诞生的时间长短状压起来.

\(f_{i, S}\) 表示插入节点 \(i\),待填补的空位集合为 \(S\)

存在转移:

\[\begin{aligned} f_{i, S} &\rightarrow f_{i+1, (S-t)+1}\ (t\in S) \\ (2i-3)f_{i, S} &\rightarrow f_{i+1, S+1}\\ (i-1)f_{i, S} &\rightarrow f_{i+1, \{S\cup 0\}+1} \end{aligned} \]

分别表示填补空位、插入叶子或边的中间、作为之后节点的儿子.