比赛思路
传送门
- T1(count):刚开始看错题意了。。。然后想到了从小往大加,但是没有想到可以预留位置,以为是直接贴在一起插的,然后就转移不动了。。。
- T2(play):想到了显然的nq的做法,然而却并没有什么分。。。
- T3(maintain):显然是数据结构,但是显然并不可打。。。
赛后消化
- 可以预留位置,设状态f[i][j][k][l]表示已经放了从小到大的第i个,分为了j段,当前的绝对值之和为k,因为边界有可能有或没有,是特殊情况,所以要多加一维l表示0/1/2个边界已经确定了。这相当于是对于每新加进来的一个数考虑它的贡献±a[i]、0、±2a[i]。因为k可能刚开始加得比较大,所以我们在每一个段的边界上再假定多加一个当前的a[i],那么可以保证全部是正数,且当前的k一定为最终k的最小值。
- T2推式子,运用指数型多项式的知识就可以
简单 推导了。
- T3数据结构。先用splay预处理所有操作实际的位置,然后变成了一个动态数点的问题,可以用set处理出相邻的相同颜色的范围,那么修改当前点影响到的一个区间的范围(二维的)可以算出,然后用CDQ处理时间,扫描线+树状数组处理二维偏序的问题,就可以比较
简单 困难地解决这个问题了。码量大概在6K左右,我也只能口胡了。
总结
- 今天学习了一下指数型多项式,但是发现一些基础的导数、积分的知识我还完全不知道,只能暂时以记结论的方式去运用。可见数学知识才是学习更高更难算法的基础。
- T1实际上是一个不难的东西,可惜我没有往插入已知位置以及提前计算好答案那个方面去想。
posted @
2020-01-18 07:52
Deep_Thinking
阅读(
74)
评论()
编辑
收藏
举报