A
考虑一个贪心,正正负负想配对,剩下的让大配小,小配大即可。
B
考虑一个简单的贪心,就是每次尽量带小的。
但是这样无法通过,怎么办呢?
我们考虑优化过程,二分带到第几个可行。
但是原序列不一定有序,这里可以考虑 vector 维护一下序列,但是还是无法动态维护前缀和。
因此我们开两颗值域树状数组,一颗记录和,一颗记录数字个数,这样就可以做了。
但是值域很大,所以离散化,注意到这里的离散化有些不同,需要将相同的数字区别开来。
具体实现可见 record。
10 组多测,,被
冲过去了,怎么回事呢?
C
考虑一个简单的 dp。
考虑怎么优化判断的过程。
我们使用类似于最长上升子序列的处理方式,依旧采用离散化。
但是这次中,我们修改的是单点,查询的是后缀,因此我采用了大常数的线段树,而非在本题中超级难写的树状数组。
但是,总体的数字是不确定的,因此我们在每两个离散化数的中间留下 的空隙,方便中间的数插进去。
但是具体实现中我并没有实现这一点,也过了,这是怎么回事呢?
赛后查明了,原因是因为线段树的修改是闭区间,所以相当于囊括了中间点。
但是极限数据要跑 8s,我以为自己似了,但是不然,卡常依然发挥力量,手动开完 O2 卡到了 1.8s,学校内部机子有点慢,所以我认为能过。
结果:没卡常的版本也过了。
D
我们考虑一个暴力。
和一个 的性质,这部分可以使用线段树来做。
拼起来!
然后就干掉了。
总结
蛮水的。rk21,一把上蓝(以前还是萌新的时候打的不算!)。
个人认为对拍是很重要的,我靠对拍这次赢麻了。