0%

Codeforces Round 770

A

题目大意

给定字符串 $S$,一次操作为 $S\gets rev(S) + S$ 或 $S\gets S + rev(S)$,求 $k$ 次操作后可以得到的字符串种数。

题解

首先,如果 $S$ 本身回文或 $k=0$,答案显然为 $1$。

其次考虑 $k=2$ 的情况。第一次操作得到了 $SS’$ 或 $S’S$,其反转分别为 $S’S$ 和 $SS’$,显然拼接后仅有两种情况。故其他情况答案均为 $2$。

B

题目大意

给定 ${a},x,y$,保证恰存在一个 $d=x$ 或 $d=x+3$,一定存在操作使得 $d$ 与 $y$ 相等。

操作定义为依次考虑 $a_i$,$d\gets d+a_i$ 或 $d\gets d\oplus a_i$。

求 $x$ 与 $x+3$ 哪一个能满足条件。

题解

非常诈骗。

注意到 $x$ 与 $x+3$ 奇偶性不同,且异或和求和对最终的奇偶性的贡献是一样的,对 $a$ 中奇数个数讨论即可。

C

题目大意

给定 $n,k$,求一个 $nk$ 的排列,使得区间 $[1,k],[k+1,2k],\dots,[k(n-1), kn]$ 是好的。

定义一个区间是好的,当且仅当其区间内的所有区间的平均数均为整数。

题解

对于一个区间 $[qk, (q+1)k]$,其中的所有数奇偶性必定相同,并且一定存在一种构造方式,形如 ${2p+1,2p+3,\dots}$ 或 ${2p, 2p+2,\dots}$。

则有解当且仅当 $nk$ 中奇数与偶数的个数均可整除 $k$。直接按上述方式构造即可。

D

题目大意

猜一个序列 $a$ 中 $0$ 的下标,其中只包含一个 $0$,允许猜 $2$ 次。一次询问可以给出 $3$ 个互不相同的 $i,j,k$,返回 $\max(a_i,a_j,a_k)-\min(a_i,a_j,a_k)$。允许最多查询 $2n-2$ 次。

题解

考虑 $n=4$ 的情况。钦定 $a_1<a_2<a_3<a_4$,则我们可以查 $4$ 次,分别可以表示成

  • $(1,2,3)\to a_3-a_1$
  • $(1,2,4)\to a_4-a_1$
  • $(1,3,4)\to a_4-a_1$
  • $(2,3,4)\to a_4-a_2$

不难发现,其中的最大值为 $a_4-a_1$ 且其一定出现了 $2$ 次,这两次查询中的没选的那个两个数一定不是答案,即得到 $2$ 个可能的答案。

对于 $n>4$ 的情况,只要不断删去两个数即可,需要操作 $(n-2)/2\times 4=2n-4$ 次。

特别的,可能出现 $n=3$ 的情况,再任意补上一个数即可。