NYOJ 456 郵票分你一半(01揹包)

2021-08-06 03:10:09 字數 774 閱讀 1348

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:3 描述

小珂最近收集了些郵票,他想把其中的一些給他的好朋友小明。每張郵票上都有分值,他們想把這些郵票分成兩份,並且使這兩份郵票的分值和相差最小(就是小珂得到的郵票分值和與小明的差值最小),現在每張郵票的分值已經知道了,他們已經分好了,你知道最後他們得到的郵票分值和相差多少嗎?

輸入第一行只有乙個整數m(m<=1000),表示測試資料組數。

接下來有乙個整數n(n<=1000),表示郵票的張數。

然後有n個整數vi(vi<=100),表示第i張郵票的分值。

輸出輸出差值,每組輸出佔一行。

樣例輸入25

2 6 5 8 9

32 1 5

樣例輸出02

今天開始刷01揹包,總是忘記把dp陣列置0,有和我出一樣毛病的小夥伴要多多注意。。。。。。

分析:這道題和我上午在hd上刷的一道題很像,本題的揹包容量是郵票的分值,因為要分為兩份分值相差最小的,所以揹包容量就是郵票的總分值sum/2,因為郵票的價值也是自身的分值,所以推出狀態轉移方程為:dp[j]=max(dp[j],dp[j-s[i]]+s[i])。

#include #include#include#includeusing namespace std;

int main()

printf("%d\n",sum-dp[sum/2]-dp[sum/2]);

}return 0;

}

NYOJ 456 郵票分你一半

郵票分你一半 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 小珂最近收集了些郵票,他想把其中的一些給他的好朋友小明。每張郵票上都有分值,他們想把這些郵票分成兩份,並且使這兩份郵票的分值和相差最小 就是小珂得到的郵票分值和與小明的差值最小 現在每張郵票的分值已經知道了,他們已...

nyoj 456 郵票分你一半

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 小珂最近收集了些郵票,他想把其中的一些給他的好朋友小明。每張郵票上都有分值,他們想把這些郵票分成兩份,並且使這兩份郵票的分值和相差最小 就是小珂得到的郵票分值和與小明的差值最小 現在每張郵票的分值已經知道了,他們已經分好了,你知...

NYOJ 456 郵票分你一半

標籤 動態規劃,揹包問題,01揹包 相似題目 題目小珂最近收集了些郵票,他想把其中的一些給他的好朋友小明。每張郵票上都有分值,他們想把這些郵票分成兩份,並且使這兩份郵票的分值和相差最小 就是小珂得到的郵票分值和與小明的差值最小 現在每張郵票的分值已經知道了,他們已經分好了,你知道最後他們得到的郵票分...