AtCoder Regular Contest 189 (Div. 2)
AtCoder Regular Contest 189 (Div. 2)
B - Minimize Sum
给定一个序列 ,每次操作可以选择一个 ,以 和 为中心,翻转 和 。任意次操作后,求最小的 。
有一个结论是:对数组进行差分,每次操作等价于交换 和 。然后就做完了。
1 |
|
C - Balls and Boxes
有 个盒子,第 个里有 个红球, 个蓝球。给定排列 ,每次操作可以将第 个盒子的红球放到第 个盒子,蓝球放到第 个盒子。问是否能在若干次操作后使得除了盒子 外,其它盒子都为空,求最小操作次数。
套路地,建立两张图,分别是 向 , 向 连边。由于 是排列,所以得到的一定是若干个环。如果有球的盒子不在 所在的环上,那么必然无解。否则,考虑环上离 最远的点 。那么操作序列一定是
只需要求这两个序列的 LCS 就可以了。但这是 的。可以将 中的每个元素映射为 ,然后对 做相同的映射,求映射后的 LIS ,这样就做到了 。
1 |
|
D - Takahashi is Slime
有 只史莱姆,每只史莱姆有一个大小。每只史莱姆可以吃掉相邻的大小严格小于它的史莱姆。求每只史莱姆最大的大小是多少。
考虑这样的流程:
- 先求出当前大小下左侧和右侧第一只不能吃的史莱姆;
- 吃掉所有当前可以吃的史莱姆,更新大小。
这样的流程最多重复 次。因为更新完以后的下一次,如果它吃掉了之前不能吃的史莱姆,它的大小将至少增加到原来的一倍,否则就结束。
第一步和第二步都可以用线段树查询。
1 |
|
AtCoder Regular Contest 189 (Div. 2)
https://je3ter.github.io/2024/12/11/ACM/AtCoder Regular Contest 189 (Div. 2)/