arc148 abcde 题解
A
B
C
给你一颗有根树,每个节点是黑色或白色,初始全为白色。
每次询问给出一个点集 \(S\),把点集中的点全部染成黑色,问至少需要翻转多少个节点使整棵树全为白点,无解输出 \(-1\)。
翻转的定义为:将节点 \(u\) 及其子树中所有节点颜色翻转。
暴力做法:从父亲开始做,如果该点为黑色则翻转整个子树再往下做。
正解:父亲做一次,翻转整个子树,父亲的儿子状态也会改变,相当于对儿子的子树翻转一遍,所以改变状态的只有该点和其直接儿子。
D
场上 \(2N\) 个整数, Alice,Bob轮流取数,Alice 先手,如果最终 Alice 取出的数字的和,与 Bob 取出来数的和,模 \(M\) 后的结果相等,那么 Bob 获胜,否则 Alice 获胜。
从最后开始想,设 A 取值为 \(x\), B 取值为 \(y\),剩下两个数分别为 \(a\) 和 \(b\)。
如果 B 获胜则必须满足:
且
两式相减得到 \(2a \equiv 2b \pmod M\),是 B 获胜的必要条件。
容易发现满足 \(2a \equiv 2b \pmod M\) 只有两种可能,要么本身相同,要么其中一个取模。
对于把他们两两分组,若取一组中的一个,则下一手取这一组的另一个,对于上面两种情况,第一种没有贡献,第二种使两个人的差增加 \(\frac{M}{2}\),所以第二种对数必须为偶数。
E
给定长度为 \(n\) 的数列 \(\{a_i\}\) 和一个自然数 \(K\), 可以将 \(\{a_i\}\) 打乱顺序重排,问多少种结果序列满足 \(\forall i \in [1,n), a'_i + a'_{i+1} \ge K\)。 答案对 \(998244353\) 取模。
神奇题。
分成两类,一类大于等于 \(\frac{k}{2}\),一类小于,这里除法是保留小数而非向下取整,因为是方案数有相同,要先去重。
两条限制:
-
两个属于第二类的数不能相邻。
-
对于一个第一类的数和一个第二类的数,设 \(y \ge \frac{k}{2}\),\(x < \frac{k}{2}\) 则有 \(|y-\frac{k}{2}|\ge|x-\frac{k}{2}|\)
按上面绝对值排序,相同则第一类优先,这样就能处理第二个限制,处理第 \(i\),分两类做。
设该类数的个数为 \(cnt\),\(s\) 为现在可放的位置。
- 第二类的数
因为两两间不能相邻,所以方案数为 \({s}\choose{cnt}\),\(s\) 减去 \(cnt\) (接下来不能放这个数旁边)。
- 第一类的数
两两间可以相邻,而且前面第二类数不能相邻,同上,所以方案数为 \({s+cnt-1}\choose {s-1}\),\(s\) 加 \(cnt\) (接下来的数可以放在这个位置)。

浙公网安备 33010602011771号