>link
>解題思路
一道非常典型的dfs,通過維護人數不超過總人數的一半來剪枝
為了方便,我dfs的時候用乙個變數c來記錄兩隊體重之差,左邊隊的就+,右邊隊的就-,最後取c的絕對值
>**
#include
#include
#include
#include
#include
#define n
30#define inf 1
<<
30using namespace std;
int t
, n, w[n]
, ans;
void
dfs(int now, int cnt1, int cnt2, int c)
if(cnt1 < n /2+
(n &1)
)dfs
(now +
1, cnt1 +
1, cnt2, c + w[now]);
if(cnt2 < n /2+
(n &1)
)dfs
(now +
1, cnt1, cnt2 +
1, c - w[now]);
}void
work()
int main()
code vs拔河比賽
時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解 檢視執行結果 乙個學校舉行拔河比賽,所有的人被分成了兩組,每個人必須 且只能夠 在其中的一組,要求兩個組的人數相差不能超過1,且兩個組內的所有人體重加起來盡可能地接近。輸入描述 input description 資料的第1行...
拔河比賽 DP
description 乙個學校舉行拔河比賽,所有的人被分成了兩組,每個人必須 且只能夠 在其中的一組,要求兩個組的人數相差不能超過1,且兩個組內的所有人體重加起來盡可能地接近。input 輸入資料的第1行是乙個n,表示參加拔河比賽的總人數,n 100,接下來的n行表示第1到第n個人的體重,每個人的...
DP 拔河比賽
乙個學校舉行拔河比賽,所有的人被分成了兩組,每個人必須 且只能夠 在其中的一組,要求兩個組的人數相差不能超過1,且兩個組內的所有人體重加起來盡可能地接近。input 輸入資料的第1行是乙個n,表示參加拔河比賽的總人數,n 100,接下來的n行表示第1到第n個人的體重,每個人的體重都是整數 1 wei...