上次北京赛现场赛的题了,昨天做了道区间dp,突然想起来这道题,都是很类似的,就翻出来做了做
刚开始像昨天做的那道一样,老想着怎么逆推,后来发现这道题应该正着推
其实正推和逆推乍看起来是很相似的,只不过一个是dp[i][j]表示i、j左右还有其他狼时消灭掉i-j这段消耗的费用,一个是表示最后只剩i-j时消灭掉这段的费用
总结一下昨天那道区间dp和今天的区间dp的相同点,发现区间dp适用于费用会随着时间的推移,或者说dp的进行不断变化
#include
#include
#include
using namespace std; const int inf=999999999; int a[205],b[205]; int dp[205][205],n; void init(){ for(int i=0;i<205;i++){ for(int j=0;j<205;j++){ dp[i][j]=inf; } } b[n+1]=0; for(int i=1;i<=n;i++) dp[i][i]=a[i]+b[i-1]+b[i+1]; for(int i=1;i