Codeforces Round #721 (Div.2)
A. And Then There Were K
答案显然是 $2^{\lfloor\log_2 n\rfloor}-1$.
1 |
|
B1. Palindrome Game (easy version)
由于初始情况一定是回文串,所以 Alice 只能更改某个 0
,于是只要 Bob 更改对称位置的那个 0
,Alice 就永远只能进行操作 1。直到最后只剩 2 个 0
时,Bob 在 Alice 更改一个 0
后进行翻转操作就可以胜利。
唯一的例外是 $n$ 是奇数且中心位置是 0
且 0
的数量多于 1 个,那么 Alice 只需要改中心位置的 0
,这个困境就交到了 Bob 手里。
B2. Palindrome Game (hard version)
如果是回文串转到 B1,现在只考虑初始串不是回文的情况。
首先证明 Alice 一定不会输:假设初始串在第一步不做翻转的条件下是先手不输的,那么 Alice 一定不输;否则,如果初始串在第一步不做翻转的条件下是先手必输的,那么 Alice 做一次翻转操作,必输态就给到了 Bob 手里,于是 Alice 必胜。(这个证明感觉上很类似于「证明存在一个无理数的无理数次方是有理数」)。
所以我们只需要考虑什么时候会 DRAW 即可。
假设初始串只进行一次更改之后不能变成回文串,那么根据上述分析,现在的先手不输,又由于对手之前进行了一次操作,所以现在的先手必胜。因此,只要 Alice 先做翻转操作,Bob 只能做一次更改操作,那么 Alice 就胜利了。
否则,一次更改之后初始串能变成回文串。那么,当且仅当这个回文串只有一个中心 0
时结果是 DRAW,否则结果一定是 Alice 胜。这是因为:如果变成的回文串是必胜的,那么 Alice 只需要先翻转初始串,然后 Bob 将其变成回文(Bob 一定会这么干,否则 Alice 一直进行翻转操作而 Bob 只能进行更改操作,这对 Bob 不利),然后 Alice 胜利;否则回文串是必败的,那么 Alice 先把初始串变成该回文串,然后 Bob 必败且根据 B1 的分析知至少输 $2,于是 Alice 胜利。
1 |
|
C. Sequence Pair Weight
把同一个值出现的位置拿出来单独考虑:设 $v$ 出现的位置为 $p_1,\,p_2,\cdots,\,p_m$,则 $v$ 对答案的贡献是:
前缀和一下就可以做到 $O(m)$ 了。
1 |
|
D. MEX Tree
把 $0$ 视为树的根,那么 $\text{mex}=0$ 的答案就是各个子树内部配对的数量。
求 $\text{mex}=i$ 时采取 $\text{mex}\geqslant i$ 的数量减去 $\text{mex}>i$ 的数量的方法。由于 $\text{mex}\geqslant i$ 就是 $\text{mex}>i-1$,所以现在只需要解决如何求解 $\text{mex}>i$ 的数量即可。
$\text{mex}>i$ 意味着必须要经过 $0,1,\cdots,i$ 这些点,如果它们不在一条链上,那么一定无解;否则,维护这条链,经过这条链的路径数量可以简单的算出来,这就是 $\text{mex}>i$ 的点对数。
1 |
|
E. Partition Game
和前一天刚做到的这道题如出一辙,可惜比赛的时候没时间看了,血亏~
题解参考之前的博客,不单独对这道题写一遍了。
1 |
|
Codeforces Round #721 (Div.2)
http://xyfjason.github.io/blog-xcpc/2021/05/21/Codeforces-Round-721-Div-2/