BZOJ1334 [Baltic2008]Elect

来源:互联网 发布:linux 用户 主组 编辑:程序博客网 时间:2024/06/01 16:55

傻逼题,按大小排序,然后直接背包即可,转移的时候保证不从>s/2的地方转移就行

#include<iostream>#include<cstring>#include<ctime>#include<cmath>#include<algorithm>#include<iomanip>#include<cstdlib>#include<cstdio>#include<map>#include<bitset>#include<set>#include<stack>#include<vector>#include<queue>using namespace std;#define MAXN 100010#define MAXM 1010#define ll long long#define eps 1e-8#define MOD 1000000007#define INF 1000000000bool f[MAXN];int a[MAXN];int n;int s;int main(){int i,j;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&a[i]);s+=a[i];}sort(a+1,a+n+1);f[0]=1;for(i=n;i;i--){for(j=min(s,s/2+a[i]);j>=a[i];j--){f[j]|=f[j-a[i]];}}for(i=s;i>s/2;i--){if(f[i]){printf("%d\n",i); return 0;}}printf("0\n");return 0;}/**/


原创粉丝点击