AGC020C Median Sum

题意

出门下转https://agc020.contest.atcoder.jp/tasks/agc020_c

题解

bitset优化dp能否取到某个数

然后从 $(sum+1)/2$ (注意:不是 $sum/2$)往前看看第一个能取到的是啥就好了

调试记录

  • 写了 $sum/2$ 导致有重复的数的时候错误

代码

#include <bits/stdc++.h>
using namespace std;

bitset<2000*2000+1> S;

int main() {
    int n; scanf("%d", &n);
    int sum = 0;
    S[0] = 1;
    for (int i=1; i<=n; i++) {
        int x; scanf("%d", &x);
        S = S | (S << x); sum += x;
    }
    // sum /= 2;
    sum = (sum + 1) / 2;
    while (!S[sum]) ++sum;
    printf("%d\n", sum);
    return 0;
}
posted @ 2018-08-14 10:20  MCH__ds  阅读(347)  评论(0编辑  收藏  举报