好了我已经说过N次我是dp菜了,这道题交了N次连wa带re啊。。
题目大意:
有k(1<=k<=100)个人要进行粉刷工作,每个人最多粉刷l[i]个栅栏(必须连续),必须包含第s[i]个栅栏,粉刷每个栅栏的费用为p[i]。总共有n个栅栏(1<=n<=16000)。让你求解如何安排这些人粉刷栅栏使费用最小。
简略题解:
恩,我一开始只想到了n^2*k的算法,f[i,j]表示第i个围墙第j个人来刷的最小费用
f[i,j]:=max{f[j]+len*cost}但是对于n=16000显然TLE
然后就用一个队列来存储以前的结果,维护队列的单调性就可以了。
附代码: