code vs拔河比賽

2021-07-09 18:35:19 字數 871 閱讀 8138

時間限制: 1 s

空間限制: 128000 kb

題目等級 : ** gold

題解

檢視執行結果

乙個學校舉行拔河比賽,所有的人被分成了兩組,每個人必須(且只能夠)在其中的一組,要求兩個組的人數相差不能超過1,且兩個組內的所有人體重加起來盡可能地接近。

輸入描述 input description

資料的第1行是乙個n,表示參加拔河比賽的總人數,n<=100,接下來的n行表示第1到第n個人的體重,每個人的體重都是整數(1<=weight<=450)。

輸出描述 output description

包含兩個整數:分別是兩個組的所有人的體重和,用乙個空格隔開。注意如果這兩個數不相等,則請把小的放在前面輸出。

樣例輸入 sample input

3100

90200

樣例輸出 sample output

190 200

#include

#include

#include

#include

using namespace std;

int a[103],f[45000][103];

int num[45000];

int i,j,n,m,ans,k;

int main()

for (i=1;i<=m;i++)

for (j=1;j<=n;j++)

if (f[i][j]==1&&abs((n-j)-j)<=1)

int ano=m-ans;

printf("%d %d\n",min(ans,ano),max(ans,ano));

return 0;

}//有點類似於揹包可行性問題

CODEVS 1959 拔河比賽

原題鏈結 看臉的時候到了 隨機化!重複!dp的flag倒下了!夏天沒有西瓜!總之有非常看臉的隨機做法 也有非常靠譜的dp做法 dp是bool型 判斷前i個人裡選j個能不能達到k 隨機化 include include include include include include include i...

Codevs 1959 拔河比賽

有兩種做法 第一種 dp 不過這個dp比較難想,而且比較特別,解釋見 注釋。include include include include using namespace std int n,sum,k,a 105 bool f 105 45005 int main printf d d min a...

codevs1959 拔河比賽

題目大意 給定乙個有 n 個數的集合,將這 n 個數均分成兩堆,求差值最小是多少。題解 有關集合選數的問題,應該是揹包問題,同時要求均分可知,選出的物品數目也應該是揹包費用的乙個維度,因此這是乙個多維費用揹包問題。設狀態 dp i j k 表示考慮了前 i 個數字,已經選了 j 個數字,數字之和為 ...