做题记录(新)

20200229

uoj76(dp,图论)

【GDOI2020模拟01.18】加减(闵可夫斯基和,分治)

法1:线段树,也是csacademy官方题解做法。

注意到$x+2$的解由$x$添加$2$个数得来(不会证明),于是可以使用线段树寻找对答案贡献最大的$2$个数并且删去。速度较慢。

法2:分治。注意到左右两端的最优解在加新的一边以后只会浮动2个数。于是可以使用分治计算。

法3:闵可夫斯基和+分治。考虑一下左边的最优解数组$a$和右边的最优解数组$b$,问题转化为$(\max,+)$卷积。

(实际上由于左边/右边的选出的数的数量的奇偶性,卷积不一定是$(\max,+)$卷积,但是并不影响)

这个卷积的低于$O(n^2)$算法没有被发现,但是这道题有特殊性,函数是分奇偶凸的。

于是可以分最大/最小值,合并正/负凸壳。这个合并可以使用闵可夫斯基和完成。

具体来说,每次比较2个指针端那个更好,然后移动指针即可。

证明可以使用反证法。(先咕)

【GDOI2020模拟02.07】矩阵(dp,ntt)

20200301

 

 

猜你喜欢

转载自www.cnblogs.com/cszmc2004/p/12386781.html