51nod 1007 正整數分組

2022-03-11 00:38:19 字數 921 閱讀 6030

將一堆正整數分為2組,要求2組的和相差最小。

例如:1 2 3 4 5,將1 2 4分為1組,3 5分為1組,兩組和相差1,是所有方案中相差最少的。

input

第1行:乙個數n,n為正整數的數量。

第2 - n+1行,n個正整數。

(n <= 100, 所有正整數的和 <= 10000)

output

輸出這個最小差

對於題意,可以猜想2組的差最小,那麼每一組都要接近sum/2,這樣就轉化成了普通的0 - 1揹包了。

#include#include

#include

#include

#include

#include

#include

#include

#define inf 99999999

#define mod 1000000007

#define ll __int64

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

#define key_value ch[ch[root][1]][0]

using

namespace

std;

const

int maxn = 110

;int dp[10010

];int

n,m;

intval[maxn];

intmain()

sort(val+1,val+n+1

); memset(dp,

0,sizeof

(dp));

for(int i = 1; i <= n; i++)

}cout

<2]*2)<}

}

51Nod 1007 正整數分組

將一堆正整數分為2組,要求2組的和相差最小。例如 1 2 3 4 5,將1 2 4分為1組,3 5分為1組,兩組和相差1,是所有方案中相差最少的。input 第1行 乙個數n,n為正整數的數量。第2 n 1行,n個正整數。n 100,所有正整數的和 10000 output 輸出這個最小差input...

51Nod 1007 正整數分組

1007 正整數分組 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 將一堆正整數分為2組,要求2組的和相差最小。例如 1 2 3 4 5,將1 2 4分為1組,3 5分為1組,兩組和相差1,是所有方案中相差最少的。input 第1行 乙個數n,n為正整數的數量。...

51nod 1007 正整數分組

01揹包 需要多做這種題 能看到題想到這個思路 如果sum為奇數 比如 sum 5,那麼sum 2 就是2 所以 總共的sum dp sum 2 就是較大的那一塊分類 然後dp sum 2 就是較小的 然後兩者做差就是 相差最少的 includeusing namespace std const i...