HDU 1171 母函式 揹包(待補)

2021-09-01 11:38:09 字數 988 閱讀 7037

分家,共有n種財產,每種財產價值v,數量為m,平分給a、b機構(原題講的是學院= =||),並且a所得不小於b。

求a和b可以分到的值。

算是比較經典(?)的題目。(講真,要不是這題在老師分在母函式裡我想不到用這個。)

我目前對母函式的理解是,求出所有target的組合方法。例如hdu1028,1398的題來說,target的值在於輸入,而這個題輸入的是價值和數目。而這題輸入的是財產和數量。

那麼,其實可以這樣想,一共有財產sum,我要均分,那麼sum/2,如果有sum/2這樣的分法,這就是我們要的答案。

如果沒有sum/2的分法,可以逐漸往後找。

這個時候母函式扮演的角色是確定有沒有分法,而不是以往的有幾種分法。

最開始用的vector,然後re了,應該是n有可能等於0。

然後,用陣列後顯示的是tle,陣列開大ac了。(這點就很奇怪……)

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

const int maxn = 250005;

struct node

;node v[maxn];

int sup[maxn], temp[maxn];

int main()

for (int i = 0; i <= v[0].m; i++)

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

}for (int j = 0; j <= sum; j++)

}int mid = (sum % 2 ? sum / 2 + 1 : sum / 2);

int i;

for (i = mid; i <= sum; i++)

printf("%d %d\n", i, sum - i);

}return 0;

}

hdu1171 多重揹包模板題

最近重新開始學dp,今天做到多重揹包這題,自己寫了乙個 感覺自己確實進步點了 嘻嘻。但是我沒看清題意n 0 退出迴圈,我wa 了無數次。下 面是自己寫的 include include include include include include include include include i...

hdu1171 hdu2602 簡單01揹包

hdu1171 將總額的一半作為揹包容量,狀態方程s j max s j s j v i v i include include includeusing namespace std int v 5000 int s 250000 int main void int max 1 for i 1 i ...

HDU 1028 母函式解 完全揹包解

初學母函式,練練手 母函式解 求整數n的整數拆分方法 題目理解為 將數字1 2 3 n 每個數字可以選取無限次,求能組成n的情況總數 函式 1 x x 2 x 3 1 x 2 x 4 1 x 3 x 6 x 9 第一項的意義是 取0個1,取1個1 2個1,3個1 第二項的意義是 取0個2,取1個2 ...