啊这是一道省选题,怪不得我不会写,最重要的是战胜自己的内心要坚信你会写出来,恩。
用f[i][j]来表示前i个月还有j吨货的费用,就是依靠 上一月的费用+上一月的货的存费+订需要的+订(j-k)的费用
f[i][j]=min(f[i-1][k]+k*m+d[i]*(u[i]+(j-k))); ( 0<j,k<s) -> f[i][j]=min(f[i-1][k]-d[i]*k+k*m)+d[i]*(u[i]+j);
由于k的范围是从0到s 而s大的不止一点,所以一步步循环就会超时,因此需要用队列来优化,跟 超级教主 相似,都是单调递减,队首为最优 之后一步步把队尾踢出去换最优
原文:http://www.cnblogs.com/Kaike/p/6323447.html