AGC010 记录
赛次总结
整场是偏向博弈和构造的思维场,总体思维都较为巧妙。
A.Addition
题意
给定一个\(n\)个整数的数组\(A\),每次可以删去一对奇偶性相同的\(A_i,A_j\),再添加一项\(A_i+A_j\)。
判断是否能够通过若干次操作后使得数组只剩下一项。
B.Boxes
题意
有\(n\)个箱子围成一圈,第\(i\)个箱子有\(A_i\)个石头。
每次可以选择箱子,箱子的编号为 \(i\),然后对于每个 \(j \in [1,N]\),将第 \((i+j)\) 个箱子移除 \(j\) 个石头。
其中编号为 \(n+k\) 的箱子,视为编号为 \(k\) 的箱子。
如果箱子中石头的个数不足移除的个数,那么就不能进行这个操作。
题解
题目要求判断这个数组是否能是若干个循环的 \([1,n]\) 的数组相加而成的。
考虑对数组差分,会发现问题被转化为:差分数组是否是若干个循环 \(1,1,-(n-1)\) 的数组的和的形式。
对于每个位置,解出 \(-(n-1)\) 的个数。
需要保证的是每一次解出来的 \(x\) 次数不能为负数,并且 \(x\) 的总和必须要是用总数计算出来的次数。
C.Clean
题意
给定一个\(n\)个节点的树,一开始第\(i\)号节点上有\(A_i\)个石头。
每次可以选择一对树叶,然后移除这两个节点路径所有节点上一个石头。
如果有路径上有节点没有石头,那么就不能进行这个操作。
判断是否可以通过若干次操作后,移除所有节点的石头。
题解
对于每一个节点 \(u\),路径是由两部分组成:经过节点 \(u\) 通往子树的路径 \(x_u\),经过节点 \(u\) 通往父节点的路径数 \(y_u\)。
记 \(sum\) 为 \(u\) 节点的子节点的通往节点 \(u\) 的路径和 \(\sum y_v\),就是子节点中还未匹配的路径。
因为这些路径如何匹配都需要经过节点 \(u\),所以可以列出以下方程。
那么对于每一个节点都是需要满足这个条件,并且有以下若干种情况需要特判:
- 根节点不能有上传的路径,即 \(y_root=0\)
- 每一个子节点上传的路径不能超过 \(a_u\)
- 如果只存在两个解,那么无法找到适合的根节点,直接判断 \(a[1]=a[2]\)
D.Decrementing
题意
\(A\) 和 \(B\) 可以轮流对一个最大公约数为 \(1\) 的数组进行操作:
每次可以选择一个不小于 \(2\) 的数,然后使其\(-1\),然后再让所有的数除去他们的最大公因子。
如果有一个人无法进行操作,那么就输掉比赛,每个人都绝顶聪明,问哪一个人可以赢得比赛。
题解
考虑问题的简化版。
如果没有除去 \(\gcd\) 的操作,那么当前的状态只和所有数到 \(1\) 的操作次数的奇偶性有关,并且不会存在干扰状态的操作。
首先因为每一次操作完后的数组的最大公因子都为 \(1\),所以可以判定是由至少一个奇数和若干个偶数组成的。
对于原题,原先的必胜态,是至少一个奇数和奇数个偶数组成情况,那么只需要对偶数进行操作,然后使对手处于至少两个奇数和偶数个偶数的必败态,并且没有方法改变当前的必败态。
必败态,是至少一个奇数和偶数个偶数的组成情况,如果当前只有一个奇数,那么就可以对奇数进行操作,这样可能可以改变当前的状态,但是如果不止一个奇数,那么对手一定在当前操作后继续制造出一个奇数,那么就一直存在于必败态中。
- 参考题解:Atcoder AGC010 题解
E.Rearranging
题意
小 \(A\) 和 小 \(B\) 在分别对一个数组进行操作。
小 \(A\) 可以任意将数组打乱,小 \(B\) 可以任意将一对相邻互质的数互换位置。
小 \(A\) 希望最后数组能字典序尽量大,小 \(B\) 希望最后数组能字典序尽量小。
询问最后数组会变成什么样子。

浙公网安备 33010602011771号