一些廢話:
怎麼說寫完前兩道題再寫這道題思路就順暢多了。但還是寫了半個小時。
依然是 dfs 。。。和上兩道題思路挺像的。
首先,根據
拔河比賽兩邊人數最多不能相差 1。可得:如果 n 是偶數那麼兩組的人數就只能相等,如果 n 是奇數那麼我們只要選出人數為 (n-1)/2 的一組就行了。
所以要選的人數即為 n/2 。
要使兩隊體重最接近,可以根據體重總和求出另一組的體重,不斷更新答案。
注意多組資料要每次給變數賦初值。
最後放下**:
#includeusingnamespace
std;
int t,n,a[21],sum,ans =1e9,b;
void dfs(int s,int t,int p)//
傳遞到第幾位,目前的人數,目前的和
dfs(s + 1,t + 1,p +a[s]);
dfs(s + 1
,t,p);
return;}
intmain()
dfs(
1,0,0
); cout
<< ans <}
return0;
}
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...