【贪心+背包】BZOJ1334 [Baltic2008]Elect

Description

  从N个数中选出任意个数且和尽量大,但要满足去掉任意一个和就小于总和的一半。n<=300, ai<=1e5。

Solution

  这个条件其实就是 去掉选出的最小的一个和就小于一半

  所以从大到小背包

Code

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cstring>
 4 using namespace std;
 5 const int maxn=1e5+5;
 6
 7 int a[maxn],f[maxn];
 8 int n,sum,ans;
 9
10 int main(){
11     scanf("%d",&n);
12     for(int i=1;i<=n;i++)
13         scanf("%d",&a[i]),sum+=a[i];
14     sort(a+1,a+n+1);
15
16     f[0]=1;
17     for(int i=n;i>=1;i--)
18         for(int j=sum/2+a[i];j>=a[i];j--)
19             if(f[j-a[i]]) f[j]=1,ans=max(j,ans);
20     printf("%d\n",ans);
21     return 0;
22 }
时间: 2024-10-04 15:41:53

【贪心+背包】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 Mem

【bzoj4922】[Lydsy六月月赛]Karp-de-Chant Number 贪心+背包dp

题目描述 给出 $n$ 个括号序列,从中选出任意个并将它们按照任意顺序连接起来,求以这种方式得到匹配括号序列的最大长度. 输入 第一行包含一个正整数n(1<=n<=300),表示括号序列的个数. 接下来n行,每行一个长度在[1,300]之间的括号序列,仅由小括号构成. 输出 输出一行一个整数,即最大长度,注意你可以一个序列也不选,此时长度为0. 样例输入 3 ()) ((() )() 样例输出 10 题解 贪心+背包dp 首先对于一个括号序列,有用的只有:长度.消耗'('的数目.以及'('减去

【bzoj1334】[Baltic2008]Elect

题目描述 N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党退出后,其它党的席位仍大于总数的一半,则这个政党被称为是多余的,这是不允许的. 输入 第一行给出有多少个政党.其值小于等于300 下面给出每个政党的席位数.总席位数小于等于 100000 输出 你的组阁方案中最多能占多少个席位. 样例输入 4 1 3 2 4 样例输出 7 题解 从大到小排序,然后01背包.注意状

HDU 5303 Delicious Apples(贪心 + 背包 2015多校啊)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5303 Problem Description There are n apple trees planted along a cyclic road, which is L metres long. Your storehouse is built at position 0 on that cyclic road. The ith tree is planted at position xi,

Installing Apps Kattis - installingapps (贪心 + 背包)

Installing Apps Kattis - installingapps Sandra recently bought her first smart phone. One of her friends suggested a long list of applications (more commonly known as “apps”) that she should install on the phone. Sandra immediately started installing

HDU 4003 [树][贪心][背包]

/* 大连热身A题 不要低头,不要放弃,不要气馁,不要慌张 题意: 给一棵树,每条边上有权值.给一个起点,放置n个机器人,要求使得任意一个节点至少被一个机器人经过. 每个机器人经过某条边时的代价为这条边的权值.反复经过需要反复累积. 问最小的代价是什么. 思路: 1.转化为背包问题.考虑给某个子树i个机器人的最小代价,即有i个机器人跑到某棵子树不回来.其中0个代表给某子树一个机器人,该机器人 遍历完该子树所有节点以后又返回该节点的代价.然后相当于每棵子树有几个物品,至少从中选择一个.进行分组背包

POJ2392Space Elevator(贪心+背包)

Space Elevator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9970   Accepted: 4738 Description The cows are going to space! They plan to achieve orbit by building a sort of space elevator: a giant tower of blocks. They have K (1 <= K <

sdut2408 pick apples (贪心+背包)山东省第三届ACM省赛

本文出自:http://blog.csdn.net/svitter/ 题意:三种苹果,每种都有对应的Size,Value,给你一个背包空间,求最大的价值. 本题目的关键就在于非常大的背包空间 依据indicates the size (1 <= S<= 100) 我们可以考虑在1000000(100^3)之外的空间放性价比最高的苹果.为什么时100^3? 要知道背包如果正好填满,而填满空间相应价值的苹果大于不填满的价值的苹果,那么就选择能填满空间而使价值最大的苹果,而非性价比最高的苹果--性价

题目清单(更新至2016年12月17日 10:52)

若无特殊说明,默认为大视野题目 [二分答案] 2196: [Usaco2011 Mar]Brownie Slicing 1082: [SCOI2005]栅栏 3969: [WF2013]Low Power 1650: [Usaco2006 Dec]River Hopscotch 跳石子 1639: [Usaco2007 Mar]Monthly Expense 月度开支 2600: [Ioi2011]ricehub [背包类DP] 1625: [Usaco2007 Dec]宝石手镯 1531: [