A

考虑一个贪心,正正负负想配对,剩下的让大配小,小配大即可。

record

B

考虑一个简单的贪心,就是每次尽量带小的。

但是这样无法通过,怎么办呢?

我们考虑优化过程,二分带到第几个可行。

但是原序列不一定有序,这里可以考虑 vector 维护一下序列,但是还是无法动态维护前缀和。

因此我们开两颗值域树状数组,一颗记录和,一颗记录数字个数,这样就可以做了。

但是值域很大,所以离散化,注意到这里的离散化有些不同,需要将相同的数字区别开来。

具体实现可见 record

10 组多测,,被 冲过去了,怎么回事呢?

C

考虑一个简单的 dp

考虑怎么优化判断的过程。

我们使用类似于最长上升子序列的处理方式,依旧采用离散化。

但是这次中,我们修改的是单点,查询的是后缀,因此我采用了大常数的线段树,而非在本题中超级难写的树状数组。

但是,总体的数字是不确定的,因此我们在每两个离散化数的中间留下 的空隙,方便中间的数插进去。

但是具体实现中我并没有实现这一点,也过了,这是怎么回事呢?

赛后查明了,原因是因为线段树的修改是闭区间,所以相当于囊括了中间点。

但是极限数据要跑 8s,我以为自己似了,但是不然,卡常依然发挥力量,手动开完 O2 卡到了 1.8s,学校内部机子有点慢,所以我认为能过。

结果:没卡常的版本也过了。

阴间版本

阳间版本

D

我们考虑一个暴力

和一个 的性质,这部分可以使用线段树来做。

拼起来!

然后就干掉了

总结

蛮水的。rk21,一把上蓝(以前还是萌新的时候打的不算!)。

个人认为对拍是很重要的,我靠对拍这次赢麻了。