本题其实是个大裸题
f[i]=max{f[j]+w(j,i)}的方程基本上是摆明了的,这个方程显然是O(n^2),虽然有30s的时限,但也是过不了的
优化,势在必行
这个方程最麻烦的一点就在于w(j,i)的形式过于飘逸,连p次方都来了,以至于诸如斜率优化,单调队列等一般方法在这里用不上
那怎么办?只剩神法决策单调性了,这个方程有决策单调性吗?怎么证? p.s 决策单调性就是对于i<j,i的最优决策<=j的最优决策
本人数学不才,但可以隐约感觉到应该是有的,可以这样想,如果没有,岂不没什么方法了?
上句话是废话,你可以略过
证明过程byvoid博客讲的非常清楚,此处略过(其实是自己不会)
光有结论还不够,具体怎么做还得学
这里我就再偷一懒,网上有一篇论文讲得非常好,名字好像是1D1D优化初步什么的,我就不讲了
大概就是每次二分一个决策的“优势”区间,然后用个双端队列维护决策集合就可以了
写的有点丑,比盾哥和mt都慢了1、2倍,好像是int64和extended慢了,反正感觉写的不怎么漂亮,但还是贴出来吧