决策单调性优化dp
决策单调性: 对于一些dp方程,经过一系列的猜想和证明,可以得出,所有取的最优解的转移点(即决策点)位置是单调递增的。 即:假设f[i]=min(f[j]+b[j]) (j<i) 并且,对于任意f[i]的决策点g[i],总有f[i+1]的决策点g[i+1]>=g[i](或者<=g[i]) 那么,这个方程就具备决策单调性。 这个有什么用吗? 不懂具体优化方法的话确实也没有什么用。可能还是n^2的。只不过范围可能少了一些。 经典入门例题: Description: [POI2011]Lightning Conductor 已知一个长度为n的序列a1,a2,...,an。 对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p - sqrt(abs(i-j)) Solution: 题目转化一下:就是对于每个i,找到aj+sqrt(abs(i-j))的最大值。 首先必须要先证明决策单调性: 当i>j时,即aj+sqrt(i-j)<=ai 假设对于i位置的决策点为g[i],那么对于任意的正数k,满足a[g[i]-k] + sqrt(i-g[i]+k) <= a[g[i]] + sqrt(i-g[i]) 当i变成i+1 的时候, 因为幂函y = sqrt(x)是下凸的, 因为i-g[i]+k < i-g[i] 所以, sqrt(i+1-g[i]+k)-