描述小珂最近收集了些郵票,他想把其中的一些給他的好朋友小明。每張郵票上都有分值,他們想把這些郵票分成兩份,並且使這兩份郵票的分值和相差最小(就是小珂得到的郵票分值和與小明的差值最小),現在每張郵票的分值已經知道了,他們已經分好了,你知道最後他們得到的郵票分值和相差多少嗎?
輸入
第一行只有乙個整數m(m<=1000),表示測試資料組數。
接下來有乙個整數n(n<=1000),表示郵票的張數。
然後有n個整數vi(vi<=100),表示第i張郵票的分值。
輸出輸出差值,每組輸出佔一行。
樣例輸入
252 6 5 8 9
32 1 5
樣例輸出
02
相同的套路,轉化為01揹包問題。如果不能均分就盡量使兩堆重量/票價差距最小。可以想象成有一堆物品,兩個容器(容量和除以2),只要保證把其中乙個容器的容積盡量加滿(當然恰好能滿最好),這就轉化成了0,1揹包問題了。
狀態轉移方程:dp[j] = max(dp[j],dp[j-weight[i]]+c[i]);
#include#include#includeusing namespace std;int dp[100005];
int a[1005];
int main()
int v=sum/2;
for(i=1;i<=n;i++)
for(j=v;j>=a[i];j--)
printf("%d\n",sum-2*dp[v]);
} return 0;
}
郵票分你一半
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 小珂最近收集了些郵票,他想把其中的一些給他的好朋友小明。每張郵票上都有分值,他們想把這些郵票分成兩份,並且使這兩份郵票的分值和相差最小 就是小珂得到的郵票分值和與小明的差值最小 現在每張郵票的分值已經知道了,他們已經分好了,你知...
郵票分你一半
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 小珂最近收集了些郵票,他想把其中的一些給他的好朋友小明。每張郵票上都有分值,他們想把這些郵票分成兩份,並且使這兩份郵票的分值和相差最小 就是小珂得到的郵票分值和與小明的差值最小 現在每張郵票的分值已經知道了,他們已經分好了,你知...
郵票分你一半
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 小珂最近收集了些郵票,他想把其中的一些給他的好朋友小明。每張郵票上都有分值,他們想把這些郵票分成兩份,並且使這兩份郵票的分值和相差最小 就是小珂得到的郵票分值和與小明的差值最小 現在每張郵票的分值已經知道了,他們已經分好了,你知...