Teza Round 解题报告(CF Round 1015)

Teza Round 1 (Codeforces Round 1015, Div. 1 + Div. 2)

Kill Time 是指想出思路的时间,> 20 min 记为 inf.

A

Kill Time : 2 min(in contest), 6 min(totally solved).

看样例,一眼猜偶数无解,奇数 \(n, 1, 2, ...\), 场上自信提交就行无需证明。

奇数容易验证,偶数的证明:

考虑有 \(\dfrac n2\) 个位置需要模偶数后得到奇数,而且它们隔一个摆一个所以不能共用。这些位置都必须用奇数。

然而奇数 \(1\) 用不了,最多也就能用 \(\dfrac n2 - 1\) 个。寄了。


B

Kill Time : 3 min

明显破局点在 min 上,记全局最小值为 \(a_i = x\)

  1. \(a_i\) 分到 min 这边(叫它左边)。那么左边塞多少数字都不影响,所以右边的策略就是所有 \(x\) 的倍数放进来,看 gcd 是不是 \(x\)
  2. \(a_i\) 分到 gcd 这边。此时左边 \(\ge x\),右边 \(\le x\),所以唯一可能也是相等。那么左边仍然可以随意放,但是必须至少放一个 \(a_j = x\)。所以不如 1 的分法。

C

Kill Time : 3 min

可以想象一个上下两层的骨牌在移动,同一个位置 \(a\)\(b\) 相对位置不变。

于是有解必然是可以两两配对,\(a_i = b_j, a_j = b_i\),奇数多一个 \(a_i = b_i\)

输出方案也没有要求最少步数,直接一个一个确定就行。


D

Kill Time : 5 min

\(f(b)\)\(b\) 序列每次可以删掉 \(k\) 个连续的数字,最多删 \(m\) 次,留下的数字求 mex 最小是多少。保证删不完。

\(b\) 使其 \(f(b)\) 最大。

二分是否 \(f(b)\) 可以 \(> x\),如果是,从 \(0\)\(x\) 每一种(比如 \(i\))都只删 \(m\) 次删不完。也即至少有 \(m + 1\) 个数字 \(i\),每两个之间下标差 \(\ge k\)

那么就可以尽可能密堆积它们,看看至少要使用的下标数是否 \(\le n\) 即可。

\[\begin{align} x \ge k &\rightarrow need\_index = (x + 1)(m + 1) \\ x < k &\rightarrow need\_index = km + x + 1 \end{align} \]

构造不再赘述。


E

Kill Time : inf

\(O(n^3)\) 容易想,但是优化没有想出来 qwq

考虑确定的 \(a\) 怎么求 \(\sum_{i,j}mex(a_i, \cdots, a_j)\),运用阿贝尔变换,变成

\[\sum_{k}\sum_{i,j}[mex(a_i, \cdots, a_j) \ge k] \]

这个条件等价于 \(0, 1, \cdots, k - 1\) 都在 \([i, j]\) 区间里出现过。可以枚举 \(k\),再看看左右至少取到哪里。

\(a\) 不确定时,\(O(n ^ 3)\) 的做法直接枚举 \(i, j, k\) 算有多少种填法满足该条件,也就是拆贡献。那么前提必须 \(0, 1, \cdots, k - 1\) 确定位置的数字都在 \([i, j]\) 中。然后记 \(-1\) 总数为 \(t\)\([i, j]\) 中有 \(c\)\(-1\)\(c'\)\(0, 1, \cdots, k - 1\) 中不确定位置的数字。贡献为:

\[\dbinom{c}{c'}c'!(t-c')! \]

时间复杂度 \(O(n^3)\)

优化的关键是知道变量的依赖关系:\(k\) 确定后 \(c'\) 确定。再枚举 \(c\),统计 \(f_{c, k}\) 表示满足 \(c, k\) 下的前提条件的 \([i, j]\) 总数。最后乘以系数累加就行。

\(f_{c, k}\) 求法:枚举 \([i, j]\)\(c\) 确定。再看看不在 \([i, j]\) 中的 \(0, 1, n - 1\) 里最小的确定位置的数字(也即它在 \([i, j]\) 外出现过)是哪个,记为 \(x\),那么 \(f_{c, 0}, \cdots, f_{c, x - 1}\) 统一加上 \(1\) 即可。

时间复杂度 \(O(n^2)\)


F

Kill Time : 17 min

考虑如果有一对数字 \(i < j\),如果 \(a\)\(i\) 出现的比 \(j\) 早,而 \(b\) 中相反,那就寄了。

所以 \(a\) 中的正序关系都必须保持。从小到大考虑 \(b\) 中没确定的数 \(i\)\(i\) 能填的区域一定是一段区间里面的空位。这段区间内肯定小的优先选最左边的空位。时间复杂度线性对数以内。

题解的贪心略有不同,此题有待验证。


G

Kill Time: inf

先看确定了 \(c\),博弈的部分:结论是 \(c\) 长度为奇数时 \(f(c) = \max(c_1, c_k)\)\(c\) 长度为偶数时 \(f(c) = \min(c_1, c_k)\)

比如奇数时 \(c_1 > c_k\):最后一步由 Piggy 来走,那么 Turtle 操作时一定至少有三个数字,它可以不要去动 \(c_1\) ,最后一步 Piggy 会把某个数和 \(c_1\) 合并。留下的 \(\ge c_1\)。Piggy 也可以做到让答案 \(\le c_1\),因为它除了最后一步操作时一定都至少有四个数字,可以不去动两边,最后一步合并 \(c_1,c_k\)。博弈的结果就是 \(c_1\)

那么对于确定的 \(b\),有(抄题解的化简):

\[\begin{aligned} \sum\limits_{i = 1}^n \sum\limits_{j = i}^n f([p_i, p_{i + 1}, \dots, p_j]) \\ = & \sum\limits_{i = 1}^n \sum\limits_{j = i}^n \Big( [i \bmod 2 = j \bmod 2] \max(p_i, p_j) + [i \bmod 2 \neq j \bmod 2] \min(p_i, p_j) \Big) \\ = & \sum\limits_{i = 1}^n \sum\limits_{j = i}^n \max(p_i, p_j) - \sum\limits_{i = 1}^n \sum\limits_{j = i + 1}^n [i \bmod 2 \neq j \bmod 2] (\max(p_i, p_j) - \min(p_i, p_j)) \\ = & \sum\limits_{i = 1}^n i^2 - \sum\limits_{i = 1}^n \sum\limits_{j = i + 1}^n [i \bmod 2 \neq j \bmod 2] |p_i - p_j| \end{aligned} \]

引用自:官方题解 https://codeforces.com/blog/entry/141155。

考虑 \(\sum\limits_{i = 1}^n \sum\limits_{j = i + 1}^n [i \bmod 2 \neq j \bmod 2] |b_i - b_j|\) 求最小值,可以 DP,从 \(1\)\(n\) 依次填位置。因为填的位置不重要,奇偶性重要。

考虑记录 \(f_{i,j}\) 表示填了 \(1\)\(i\) 的数字,有 \(j\) 个填了偶数位,目前从 \(1\)\(i\) 的数字的贡献的最小值。有用到费用提前计算。转移分 \(i\) 是奇是偶从前面转移过来就行。答案取 \(f_{n, \lceil\frac{n}{2}\rceil}\)

优化就是写出转移式子化简,用数据结构加速。喜闻乐见的数据结构大师环节。


H

Kill Time : inf

这对吗想的与题解又不太一样。

考虑从后往前依次选择要不要保留,记录 \(f_{i,0/1,0/1}\) 表示已经做好了 \([i,n]\) 中的选择,当前最左边两位是什么。考虑转移,前一位可以保留,但删除的话需要这三位不是 100 或者 011。

但是题目中并不关心你删去了哪些位置,只管你保留的串具体是什么。为了避免重复需要改改状态: \(f_{i,0/1,0/1}\) 表示当前从后往前依次选择,选出的是某一个串,当前最左边两位是 0/1,0/1;贪心地尽量只用了 \([i,\cdots, n]\)\(i\) 刚好用掉放在最左边)。

这样可行是因为总是能贪心地尽量只从右边选,继续选的时候实在不行也能再删去一些,不亏。

转移就是可以直接保留前一位,选前一位的反面则必须跳到最近的那个而且中间的都可以删光。

比如说当前最左边是 11,前面是 0,那就不能不要这个 0 而去选前面的 1,这是因为 011 删不掉 0。

起点可以假设有一个 \(s_{n+1} = s_n\),然后这两个都必选,依此开头。可行性不再赘述。

建出转移跑一个 DAG 计数,统计路径数,最后跑到的点只要 \(1 \le i < n\) 都可行(至少保留两个点)。

有待验证(咕咕咕)


posted @ 2025-04-26 23:46  Vizing  阅读(28)  评论(0)    收藏  举报