题解 洛谷P5424 【[USACO19OPEN]Snakes G】
这是一道动态规划题目。
我们先预处理出Sum数组,Sum[i][j]表示[i,j]这个区间用一个网捕捉的最小浪费。
我们不妨这样计算:Sum[i][j]=(j-i+1)*Max-Prefix
其中Max表示[i,j]区间蛇的最大值,Prefix表示[i,j]的和。
然后我们可以动态规划了。
设状态:Dp[i][j]表示前i组蛇,用j个网的最小浪费。
易证:Dp[i][j]=min(Dp[i][j],Dp[k][j-1]+Sum[k+1][i])
意思是,这个点会从前一个点k推过来,前k个点用了j-1个网,k+1到i用了1个网(我们预处理过了)。
这样就可以A掉了,代码不放了。
不要妄图追上西坠的太阳,而是要在黎明前就等着它!