
日记
我们拥有最强大的码力和最靠谱的队友。
我的俩队友一道题都没做出来。。。
列车Link to
我们把线段的两个端点们离散化。然后每个整的区间就被切成了许多小区间。对于一个区间,他的每个子区间都要加上 。然后最后的答案就是所有子区间的最小值。
这个 子区间 卡了我一天。
黄金替罪羊Link to
我们发现,每个 的取值是会影响后面的,也就是说它有后效性。不能搞普通的 dp。
我们钦定在 过去的自己 开始行动的时候自己的位置在 ,枚举每个 。设 表示 过去的自己 走了前 步,自己走了 步,过去的自己 位移为 ,自己的位移是 的方案数。
考虑转移:
- ,可以从 转移而来。
- ,可以从 转移而来。
- ,可以从 转移而来。
- ,可以从 转移而来。
- 在 时不转移,,因为自己黑化了,不合法。
注意这个 和 是同时变化的。就比如如果同时满足条件 ,就可以从 转移来。对于每个 ,答案就是 (就是枚举自己最后的位置),最终的答案就是把每个 的答案加起来。
我们发现 , 就小于 ,坐标区间的长度就是 ,而对于我们的 状态和一个 的枚举 ,总共 的复杂度,肯定是跑不过的。我们需要优化。
我们发现,在第 步是,还能做的位移至多为 ,而还要做的位移就是 ,如果有 ,就肯定不可行,直接 continue
。
时间复杂度还是 ,但是现在跑的过了。
Quartet SwappingLink to
我们发现交换的时候不会改变位置的奇偶性。比如有个数在 ,再怎么换也换不到 或者 去,只能在 为奇数的位置上动。于是我们盲猜一个结论:把奇数位置上的数和偶数位置上的数排序后输出。成功的吃到一发罚时。
我们又发现一个性质:交换的时候,逆序对的变化是 。也就是说,逆序对数量的奇偶性也不会发生变化。于是我们把原序列的逆序对数量算出来,排序后的数量算出来。如果奇偶性相同就直接输出,反之把排序后数组的第 项交换一下,因为这样既能改变奇偶性又能使字典序次小。
后日谈 Link to 后日谈
总结了一下,感觉这次 CCPC 还是收获颇丰。
拼命练就的本领绝不会辜负自己
日记
© 伊埃斯 | CC BY-NC-SA 4.0