首页 > 代码库 > BZOJ1334 [Baltic2008]Elect
BZOJ1334 [Baltic2008]Elect
直接DP一下就好了嘛、、、
首先对人数从大到小排序,然后f[i]表示的是人数为i的政党联盟能否成立
f[i] 由 f[i - a[now]]转移过来,同时保证i - a[now] <= sum即可
1 /************************************************************** 2 Problem: 1334 3 User: rausen 4 Language: C++ 5 Result: Accepted 6 Time:156 ms 7 Memory:1196 kb 8 ****************************************************************/ 9 10 #include <cstdio>11 #include <algorithm>12 13 using namespace std;14 15 int n, sum, ans;16 int a[305];17 int f[100005];18 19 int main() {20 int i, j;21 scanf("%d", &n);22 for (i = 1; i <= n; ++i)23 scanf("%d", a + i), sum += a[i];24 sort(a + 1, a + n + 1);25 f[0] = 1;26 for (i = n; i; --i)27 for (j = sum / 2 + a[i]; j >= a[i]; --j)28 if (f[j - a[i]])29 f[j] = 1, ans = max(j, ans);30 printf("%d\n", ans);31 return 0;32 }
BZOJ1334 [Baltic2008]Elect
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。