标签:hdu1171
2 10 1 20 1 3 10 1 20 2 30 1 -1
20 10 40 40
#include <stdio.h>
#include <string.h>
#define maxn 250002
struct Node{
int v, m;
} arr[52];
bool c1[maxn], c2[maxn];
int main()
{
int n, temp, mid, i, id, sum, j, k, a, b;
while(scanf("%d", &n), n > 0){
for(id = sum = 0; id < n; ++id){
scanf("%d%d", &arr[id].v, &arr[id].m);
sum += arr[id].v * arr[id].m;
}
memset(c1, 0, sum * sizeof(c1[0]));
memset(c2, 0, sum * sizeof(c2[0]));
sum = arr[0].v * arr[0].m;
for(i = 0; i <= sum; i += arr[0].v)
c1[i] = 1;
for(i = 1; i < id; ++i){
temp = arr[i].v * arr[i].m;
for(j = 0; j <= sum; ++j)
for(k = 0; k <= temp; k += arr[i].v)
c2[k + j] += c1[j];
sum += temp;
for(k = 0; k <= sum; ++k){
c1[k] = c2[k]; c2[k] = 0;
}
}
mid = sum >> 1;
while(c1[mid] == false) --mid;
b = mid; a = sum - b;
printf("%d %d\n", a, b);
}
return 0;
}
HDU1171 Big Event in HDU 【母函数】,布布扣,bubuko.com
HDU1171 Big Event in HDU 【母函数】
标签:hdu1171
原文地址:http://blog.csdn.net/chang_mu/article/details/38144197