洛谷 P2639 [USACO09OCT]Bessie的體重問題

一開始以爲是貪心
後來通過樣例數據看不是的(良心的樣例)
所以就用了DP

其實我還是不明白爲什麼不是貪心
有大神能解答一下嗎~~~

這個動態轉移方程很接近於01揹包
包括我看到的很多題解 也都說這就是01揹包
但我以爲 這兩者僅僅是類似而非一樣

我以爲
做動規題目 不能簡單簡單地想着套幾個模型
而是要不斷地從每一個狀態來分析
(當然啦 我的愚見)

//P2639 [USACO09OCT]Bessie的體重問題
//2016.11.18 

#include <cstdio>
#include <iostream>
using namespace std;

int h, n;
int f[45000], w[500 + 1];

int main(){
    scanf("%d%d", &h, &n);
    for (int i = 1; i <= n; i++)
        scanf("%d", &w[i]);

    for (int i = 1; i <= n; i++)
        for (int j = h; j >= w[i]; j--)   //特別注意 j要大於等於w[i] 因爲一會兒要相減!!!
            f[j] = max(f[j], f[j - w[i]] + w[i]);

    printf("%d", f[h]);

    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章