Link
233居然没有想出单调队列的做法 觉得用线段树妥妥T飞,单调队列没法维护 再一次被教育了
Solution
如果是加一个常数,显然维护一个递增的单调队列 加的不是常数,但也可以看到加的数字非即。也就说,原本有,转移过来的DP值至少不会比大。 所以按照这个结论就可以维护了 DP值不相同,按照DP值从小到大排序 否则,按照高度从大到小排序
Tips
用类似贪心策略的分析来得到优化DP转移的结论
Code
1 |
|
233居然没有想出单调队列的做法 觉得用线段树妥妥T飞,单调队列没法维护 再一次被教育了
f[i]=min{f[j]+(h[j]≤h[i])∣j+k≤i} 如果是f[j]加一个常数,显然维护一个f[]递增的单调队列 加的不是常数,但也可以看到加的数字非0即1。也就说,原本有f[u]<f[v],转移过来的DP值u至少不会比v大。 所以按照这个结论就可以维护了 DP值不相同,按照DP值从小到大排序 否则,按照高度从大到小排序
用类似贪心策略的分析来得到优化DP转移的结论
1 | #include "lucida" |