CF2178

比赛链接

A

发现 \(\texttt {Y}\) 肯定消不掉,所以答案是 \(\texttt {Yes}\) 当且仅当 \(\texttt {Y}\) 至多有 1 个。

B

首先强制把首尾填成 \(\texttt {s}\),然后发现长度 \(> 1\)\(\texttt {u}\) 连续段都是不合法的,所以每次尽量隔着改,一个长度为 \(l\) 的连续段只需改 \(\lfloor l / 2 \rfloor\) 次就行了。

C

发现大概是这么一个结构:有一个分界点 \(p\),在 \(p\) 之前的位置 \(i\)(除了 1)可以任选 \(a _ i\)\(-a _ i\),在 \(p\) 之后的位置 \(j\) 只能选 \(-a _ j\),位置 \(1\) 只能选 \(a _ 1\)

然后就枚举 \(p\) 或者 dp 就行了。

D

首先对 \(a _ i\) 从小到大排序。然后 \(m > n / 2\) 时一定无解。

对于 \(1 \le m \le n / 2\) 的情况,可以构造 \(i \rightarrow i + 1\)\(1 \le i \le n - 2m\)),\(i \rightarrow i - m\)\(n - m < i \le n\))。这样剩下的 \(n - m + 1 \sim n\) 号人都已经攻击过了,无法互相攻击。

对于 \(m = 0\) 的情况,首先若 \(a _ n > \sum _ {i = 1} ^ {n - 1} a _ i\) 一定无解;否则令 \(p _ 0\) 为最大的满足 \(a _ n \le \sum _ {i = p} ^ {n - 1}\)\(p\),则构造 \(i \rightarrow i + 1\)\(1 \le i < p _ 0\)),\(i \rightarrow n\)\(p _ 0 \le i < n\))。

E

发现任意时刻一定有 \(\sum a _ i = \sum b _ i\),又因为每次只能分裂最大值,所以拼接 \(a + b\) 时较短的那个数组(说明操作次数较少)包含最大值。

所以对于 2 操作,我们在最终的序列上每次二分查询出总和一半的位置,递归较短的一边。

然后又发现 1 操作也满足这个性质,所以一直按照上述方法递归直到区间大小为 \(1\) 时返回就行了。

查询次数约为 \(\frac 1 2 \log ^ 2 n\),可以轻松通过。

F

观察性质,发现初始时黑点连向父亲的边一定不会被割断。证明大概就是因为只能对大小为偶数的子树重新定根,那么不管这条边的哪个端点作为父亲子树大小都是奇数(偶数 - 奇数 = 奇数)。

然后把树按照一定不会被割断的边分成若干连通块。基于上述性质,你又发现一个连通块可以任意定根(除了 1 号节点所在连通块),并且根是白点且除了根之外的所有点都是黑点。

所以考虑把所有连通块串成一条链。特判一个连通块时答案为 \(1\),然后假设连通块的大小分别为 \(s _ 1, s _ 2, \ldots, s _ k\),不妨设 1 号节点所在连通块大小为 \(s _ 1\)

枚举最深的连通块 \(x > 1\),考虑每个连通块哪个定为根、根连向上一个连通块的哪个节点,那么答案为

\[\sum _ {x = 2} ^ n(k - 2)! s _ 1 \prod _ {i = 2} ^ k s _ i \prod _ {i = 2, i \neq x} ^ k s _ i = (k - 2)! s _ 1 \prod _ {i = 2} ^ k s _ i ^ 2 \sum _ {x = 2} ^ n \frac 1 {s _ x} \]

G

我们约定,下文中“数量”均指“数量的奇偶性”。

\(f _ i\) 表示以 \(i\) 号弦结尾的链数量。注意到一个值异或两遍会抵消掉,可以把 \(j < i\)\(f _ j\) 挂到 \(a _ j\)\(b _ j\) 位置上,\(f _ i\) 则等于 \([a _ i, b _ i]\) 区间查的结果再异或 \(1\)(只包含 \(i\) 的链),可以使用树状数组维护。

这时候设 \(g _ {i, j}\) 为以 \(i\) 号弦结尾且包含 \(j\) 号弦的链数量,则包含 \(j\) 的链数量为 \(\oplus _ {i = 1} ^ \mathscr {l} g _ {i, j}\)。转移则有 \(g _ {i, j} \leftarrow g _ {k, j}\)\(k < i\)\(k\) 号弦与 \(i\) 号弦有交)和 \(g _ {i, i} \leftarrow f _ i\)

考虑异或哈希加速,记 \(s _ i\) 表示 \(\{j | g _ {i, j} = 1\}\),则给每个 \(j\) 随机赋权 \(c _ j\),则 \(s _ i = \oplus _ {j = 1} ^ n g _ {i, j} c _ j\)。仿照 \(g _ {i, j}\)\(s _ i\) 有转移 \(s _ i \leftarrow s _ k\)\(k < i\)\(k\) 号弦与 \(i\) 号弦有交)和 \(s _ i \leftarrow f _ i c _ i\)。类似 \(f _ i\),这也可以用树状数组维护。

最后对于每个 \(\mathscr {l}\),判断 \(\oplus _ {i = 1} ^ {\mathscr {l}} s _ i\) 是否为 0 即可。

H

不会

I

不会

posted @ 2025-12-28 17:21  yemuzhe  阅读(2)  评论(0)    收藏  举报