【UOJ#311】【UNR #2】积劳成疾(动态规划)
【UOJ#311】【UNR #2】积劳成疾(动态规划)
Solution
考虑最大值分治解决问题。每次枚举最大值所在的位置,强制不能跨过最大值,左右此时不会影响,可以分开考虑。
那么设\(f[i][j]\)表示长度为\(i\),且最大值不超过\(j\)的所有方案之和。
因为最大值有多个,所以我们钦定每次选择最靠右的那个,所以转移就是:
\[f[i][j]=f[i][j-1]+\sum_{k=1}^if[k-1][j]*f[i-k][j-1]*w[j]^{c}
\]
即钦定为最靠右的那个最大值后,左侧可能还有相等的最大值,所以是\(f[k-1][j]\),右侧则所有值都小于当前位置,即\(f[i-k][j-1]\),至于那个\(c\)是啥就自己算算吧。
提交记录