HDU 5115 經典區間dp

2021-08-15 01:52:21 字數 671 閱讀 1706

題意:n頭狼,殺死第i頭狼會受到b[i-1]+b[i+1]+a[i]的傷害,問殺死所有狼受到的最小傷害值。

因為無論怎麼選,a值都只需要加一遍,所以先把a的和算出來,最後加到答案上就行了。

我們可以在兩邊加一頭a值和b值都為0的狼,dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+b[i]+b[j]);

答案為dp[0][n+1].

#include #include #include #include using namespace std;

#define inf 0x3f3f3f3f

int a[205],b[205];

int dp[205][205];

int main()

for(int i=1;i<=n;i++)

scanf("%d",&b[i]);

n++;

b[n]=0;

memset(dp,inf,sizeof(dp));

for(int i=0;i<=n;i++)

for(int len=2;len<=n;len++)

}}

printf("case #%d: %lld\n",++cas,ans+dp[0][n]);

} return 0;

}

HDU 5115 經典區間dp

題意 給定n個狼的攻擊值ai和附加攻擊值bi,每殺死一匹狼i,受到的傷害等於i的攻擊值和與i相鄰的狼的附加攻擊值。求殺死所有的狼受到的傷害的最小值。dp i j 殺死區間i j的狼受到傷害的最小值。初始化 a 0 a n 1 b 0 b n 1 0 for int i 1 i n i dp i i ...

hdu4283 經典區間dp

input 多組輸入用例t,每組第一行是小姐姐的數量,以下n行按照順序表示第1個到第n個小姐姐的耐心度m對於每組資料輸出,一行輸出乙個值,代表cry的最大快樂值,即小姐姐們耐心值的最小和。1 n 100,0 m 100 output 輸出cry的最大快樂值,具體輸出參照樣例。sample input...

hdoj5115 區間DP 基礎

題意 有n頭wolf排成一排,殺一頭wolf回受到受到的傷害 它的本身a i 相鄰兩個b i 1 b i 1 然後殺死第k個位置的wolf的話,k 1和k 1預設相鄰 滿足的話 思路 用雨巨的話說 完全orz 這不就變成區間dp水題了麼 dp i j 表示從第i頭狼到第j頭狼全部被殺死所受到的最小傷...