【2020省选模拟】01.17比赛总结

比赛思路

传送门

  • T1(count):刚开始看错题意了。。。然后想到了从小往大加,但是没有想到可以预留位置,以为是直接贴在一起插的,然后就转移不动了。。。
  • T2(play):想到了显然的nq的做法,然而却并没有什么分。。。
  • T3(maintain):显然是数据结构,但是显然并不可打。。。

赛后消化

  • 可以预留位置,设状态f[i][j][k][l]f[i][j][k][l]表示已经放了从小到大的第ii个,分为了jj段,当前的绝对值之和为kk,因为边界有可能有或没有,是特殊情况,所以要多加一维ll表示0/1/2个边界已经确定了。这相当于是对于每新加进来的一个数考虑它的贡献±a[i]、0、±2a[i]。因为k可能刚开始加得比较大,所以我们在每一个段的边界上再假定多加一个当前的a[i]a[i],那么可以保证全部是正数,且当前的kk一定为最终kk的最小值。
  • T2推式子,运用指数型多项式的知识就可以简单 推导了。
  • T3数据结构。先用splay预处理所有操作实际的位置,然后变成了一个动态数点的问题,可以用set处理出相邻的相同颜色的范围,那么修改当前点影响到的一个区间的范围(二维的)可以算出,然后用CDQ处理时间,扫描线+树状数组处理二维偏序的问题,就可以比较简单 困难地解决这个问题了。码量大概在6K左右,我也只能口胡了。

总结

  • 今天学习了一下指数型多项式,但是发现一些基础的导数、积分的知识我还完全不知道,只能暂时以记结论的方式去运用。可见数学知识才是学习更高更难算法的基础。
  • T1实际上是一个不难的东西,可惜我没有往插入已知位置以及提前计算好答案那个方面去想。
原文地址:https://www.cnblogs.com/DeepThinking/p/13090890.html