分家,共有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 ...