上次北京賽現場賽的題了,昨天做了道區間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