A
简单 (DP),令 (f_{i, 0 / 1}) 表示当前考虑完前 (i) 个数,当前位置是否填了 (-) 的贡献之和。
考虑维护一个 (g_{i, 0 / 1}) 状态与 (f) 一致,存储方案数,这样就可以 (mathcal{O}(1)) 转移了。
复杂度 (mathcal{O}(n))。
B
显然答案可以使用 (x) 表示出来,分析单调性可知只有可能在给出的点上取到。
然后随便怎么算都可以。
C
写了个乱搞,不太会证次数正确。
考虑假设最终状态为 ((n, x)),考虑使用辗转相除的方法构造,使用次数可以 (mathcal{O}(log n)) 计算。
注意到构造形式与斐波那契数列非常像,于是我们取 (x = dfrac{n}{frac{sqrt{5} + 1}{2}}) 左右的数拿进去计算次数,取最小的出来即可。
大概可以跑 (T = 10 ^ 6) 组数据,可以通过。
(其实我交的不是这个,但本质上与这个相同且这个更为简便)。
正解应该是 齐肯多夫表示法。
D
首先博弈是假的,因为 (Bob) 可以预先想好对自己最优的分组方式,然后依据 (Alice) 的选择总是可以对应着选。
于是问题就转化为:
- 给定 (2n) 个元素,需要将其分为 (n) 组,每组 (2) 个元素。使得任意一组异或和的最大值最小。
考虑按位贪心,统计当前位 (1) 的个数 (cnt)。
- 若 (cnt) 为奇数,那么意味着这一位必定会产生贡献。
同时我们可以只让一个组在这一位产生贡献且这样显然最优,那么就只要管这个组的贡献了。
直接暴力将这些数暴力插入 ( t trie),然后暴力查询最小值即可。
接下来这些数都不需要管,这部分的复杂度显然为 (mathcal{O}(n log W))。
- 若 (cnt) 为偶数,那么必定要将 ((0, 0), (1, 1)) 这样分组,否则这一位就会产生贡献。
那么我们将这一位为 (0) 的数和这一位为 (1) 的数分别拿下去递归下一位即可。
这部分复杂度也为 (mathcal{O}(n log W)),因此总复杂度为 (mathcal{O}(n log W))。
E
显然后面位置的限制大且不会对该位置之前的位置决策产生影响,因此我们考虑从后往前填。
假设将 (a_i) 填在后面,那么合法的判定条件为:
后者显然会爆 (long long),通常的处理办法是修改判定条件引入 (gcd)。
不难发现可以将条件修改为:
可知右边的大小不会超过 (a_i),因此是可以直接算的。
由于数据范围很小,直接暴力即可:(mathcal{O}(n ^ 3 log W))。
F
首先可以注意到一点性质:
- 若 (Rx_i le Rx_j, Ry_i le Ry_j) 那么第 (i) 个红球是不需要管的。
因此我们首先将不需要管的球去掉,保证:(Rx_{i - 1} < Rx_i, Ry_{i - 1} > Ry_i(2 le i le n))。
此时我们有如下重要观察:
- 无论每个蓝球移动到哪里,最终可以覆盖的红球一定是一个区间(可能为空)。
于是问题转化为:
每个蓝球可以选择覆盖任意一个区间,需要一定的花费。目标是每个红球被覆盖至少 (k) 次的基础上最小化花费。
这是一个区间 (k) 覆盖类型的问题,可以简单地转化为重复 (k) 次,每次选择一些蓝球使得所有红球被覆盖至少 (1) 次(蓝球选择不重复)。
此时我们不妨先考虑 (k = 1) 的情况。
对于 (i) 号蓝球,如果需要覆盖 ([l, r]) 这段红球区间,那么花费为:(max(0, Ry_l - By_i) + max(0, Rx_r - Bx_i))。
注意到两个维度的花费互不干扰,可以将两个维度拆开考虑。
考虑费用流,对于两个维度值域 ((W)) 上的所有整点建点,按照如下方式连边:
- ((X_{i - 1} ightarrow X_i, 1, infty), (X_i ightarrow X_{i - 1}, 0, infty)(1 le i le W))
- ((Y_{i - 1} ightarrow Y_i, 0, infty), (Y_i ightarrow Y_{i - 1}, 1, infty)(1 le i le W))
- ((X_{Rx_i} ightarrow Y_{Ry_{i + 1}}, 0, infty)(1 le i < n))
- ((Y_{By_i}, X_{Bx_i}, 0, 1)(1 le i le m))
此时 (Y_{Ry_1} ightarrow X_{Rx_n}) 的一点流量所花的最小费用即为 (k = 1) 的答案。
根据开始提到的区间 (k) 覆盖的解法,只需将流量添加至 (k) 时的最小费用即为任意 (k) 的答案。
注意到初始费用全非负,使用原始对偶复杂度 (mathcal{O(k(n + m)log (n + m))})。