原題鏈結
很容易看出來是個揹包問題嘛:
體積是總分的一半,求最高分,每個同學選或不選,是個 01揹包問題。
自信地交上去之後發現只有 90pts ,為什麼呢?
是不是忘了個條件啊喂,人家還要選 n/2 個人吶!
多乙個條件就加乙個維度。——zhx
有了第二個限制:重量是 n/2 ,這樣就從乙個 01揹包問題轉化成了二維揹包問題,我們只需在 for 迴圈中多列舉一層 1~n/2 問題就搞定了。
上ac**:
#include#includeusing
namespace
std;
intread()
while(ch>='
0'&&ch<='9'
)
return a*x;
}long
long
n,sum;
long
long test[1001
];long
long f[101][10001]; //
f[i][j]:選了i個人總分不超過j的最大分數
intmain()
for(int k=1;k<=n;k++) //
列舉每個人 }}
printf(
"%lld
",f[n/2][sum/2
]);
return0;
}
洛谷 P2663 越越的組隊
班級要組織一場綜合能力競賽,全班同學 n個,n是偶數 分成兩隊互相競爭。老師找到了越越並給了越越一張全班同學綜合能力測試的成績,要求他從全班同學中選出一半 他自己也可能被選 並要求這些同學綜合能力測試的成績之和在不超過班級總分一半的前提下盡量達到最高。這樣分成的兩隊實力是最平均的。越越堆著滿臉的笑容...
洛谷 P2663 越越的組隊
班級要組織一場綜合能力競賽,全班同學 n 100以內 個,n是偶數 分成兩隊互相競爭。老師找到了越越並給了越越一張全班同學綜合能力測試的成績,要求他從全班同學中選出一半 他自己也可能被選 並要求這些同學綜合能力測試的成績之和在不超過班級總分一半的前提下盡量達到最高。這樣分成的兩隊實力是最平均的。越越...
洛谷 P2663 越越的組隊
班級要組織一場綜合能力競賽,全班同學 n個,n是偶數 分成兩隊互相競爭。老師找到了越越並給了越越一張全班同學綜合能力測試的成績,要求他從全班同學中選出一半 他自己也可能被選 並要求這些同學綜合能力測試的成績之和在不超過班級總分一半的前提下盡量達到最高。這樣分成的兩隊實力是最平均的。越越堆著滿臉的笑容...