码迷,mamicode.com
首页 > 其他好文 > 详细

[BOI2008] Elect - 背包dp

时间:2020-02-02 13:39:05      阅读:46      评论:0      收藏:0      [点我收藏+]

标签:bit   基本   n+1   using   cout   name   开始   eve   c++   

u1s1我一开始理解错了题
然后基本就相当于一个背包dp了

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

int n,tot,a[305],f[100005],g[100005],ans;

int main() {
    cin>>n;
    for(int i=1;i<=n;i++) {
        cin>>a[i];
        tot+=a[i];
    }
    sort(a+1,a+n+1);
    reverse(a+1,a+n+1);
    f[0]=1;
    for(int i=1;i<=n;i++) {
        for(int j=tot;j>=a[i];--j) {
            f[j]|=f[j-a[i]];
            if(j-a[i]<=tot/2) g[j]|=f[j-a[i]];
        }
    }
    for(int i=(tot+1)/2;i<=tot;i++) if(g[i]) ans=i;
    cout<<ans<<endl;
}

[BOI2008] Elect - 背包dp

标签:bit   基本   n+1   using   cout   name   开始   eve   c++   

原文地址:https://www.cnblogs.com/mollnn/p/12251653.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!