NOIP2006 生日禮物

2021-07-12 06:42:30 字數 1173 閱讀 9878

題目描述

一對雙胞胎兄妹同一天過生日,這一天,他們的朋友給他倆送來了禮物,每個人送的禮物都是2本書,一本給哥哥,一本給妹妹,但沒有說明哪本是給妹妹的,哪本是給哥哥的,每本書都有自己的價值,為了避免衝突,讓你來分配,要求使得兩人所獲得書本的價值和之間的差距盡可能的小。

例如,有4個禮物:(3,5),(7,11),(8,8),(2,9),可以把3,7,8,2分配給妹妹,其餘的給哥哥,價值差為:5+11+8+9-3-7-8-2=13;如果把3,7,8,9給妹妹,其餘的給哥哥,價值差為:3+7+8+9-5-11-8-2=1,這是最好的方案。

輸入格式:

第一行包含乙個整數n(1<=n<=150),表示禮物的數量,接下來n行,每行兩個整數,表示每份禮物兩本書的價值(價值範圍在1到300之間)。

輸出格式;

輸出乙個非負整數,表示最小的價值差。

樣例輸入;4

3 57 11

8 82 9

樣例輸出

分析

本題與01揹包問題類似,用dp可以解答,方程如下:

f[i,j]=f[i-1,j-a[i]]or f[i-1,j+a[i]] (-45000<=j<=45000)

下面提供**理解:

**

#include#includeusing namespace std;

const int maxn = 150+5;

int n, a[maxn], x, y, f[maxn], t;

int main()

int m = t/2;

for(int i = 0; i < n; i++) }}

printf("%d", abs(t-2*f[m]));

return 0;

}

1005 生日禮物

題目描述 description 輸入描述 input description 輸入的第一行包含2個整數n 1 n 8 m 1 m 10 表示有n種不同型別的本子和m種小寒喜歡的顏色。接下來乙個n m的矩陣。第i行第j列的整數aij表示在第i種型別的本子中包含小寒喜歡的顏色j的紙有aij 1 aij...

codevs1005 生日禮物

時間限制 1 s 空間限制 128000 kb 題目等級 gold 輸入描述 input description 輸入的第一行包含2個整數n 1 n 8 m 1 m 10 表示有n種不同型別的本子和m種小寒喜歡的顏色。接下來乙個n m的矩陣。第i行第j列的整數aij表示在第i種型別的本子中包含小寒喜...

SCOI2009 生日禮物

傳送門 本來想用二分的,讀完資料之後,又發現不用了。然而需要開多乙個陣列p pp記錄顏色最近出現的位置,以便進行玄學操作 當達成目標 now en dnow end now e nd 時,if now end while l.col a l p l 因為a l co la l col a l c o...