ARC229
第一场 ARC,切了 AC 两个题,还算可以吧。
A
我感觉这一场 A>>>C 有没有说法的……A 想了快 1h,C 10min 左右就做完了。
首先题目的操作可以转化为:忽略 R,只考虑 AC,每次将 ARC 翻转为 CRA 时,就是把 AC 变成 CA 的过程。
尝试手玩数据,到最后 C 都会排到左侧,A 都会排到右侧,所以对于一个 C,它的贡献为它前面的 A 数量;等价地,换个视角:对于一个 A,它的贡献为它后面 C 数量。
所以 \(f(S)\) 就等价为 \(S\) 中 A 在 C 前面的逆序对数。
于是我们就可以开始构造了:
取 \(a=24\) 个 A,\(c=25\) 个 C,最大逆序数 \(a\times c=600\)。
尝试贪心生成只含 A/C 的序列:
- 若 \(x\ge c\),放入
A,这个A与后面所有C形成逆序对,产生 \(c\) 的贡献。令 \(x \gets x-c\),\(a\gets a-1\); - 否则放入
C,并令 \(c\gets c-1\)。
循环直到 \(a=0\) 或 \(c=0\),再将剩余的 A 和 C 追加到末尾。最后在相邻字符间插入 R 输出即可。
https://atcoder.jp/contests/arc229/submissions/78980466
C
首先注意到最左侧和最右侧的数只会被计算一次,因此考虑把最大的和次大的数放到最左侧和最右侧。
接下来想一下这个向下取整操作。如果 \(x\) 是偶数,那么 \(\left\lfloor \dfrac x2 \right\rfloor=\dfrac x2\),否则 \(\left\lfloor \dfrac x2 \right\rfloor=\dfrac {x-1}{2}\)。发现奇数会减 \(1\),所以尽量让分母都成奇数。具体地,因为奇数加偶数等于奇数,所以可以尝试奇偶交替着放,如果其中一个不够的话就把另外一个全部放上来即可。实现时开两个桶,分类储存所有奇数和偶数就可以了。

浙公网安备 33010602011771号