Description

     N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党退出后,其它党的席位仍大于总数的一半,则这个政党被称为是多余的,这是不允许的.

Input

     第一行给出有多少个政党.其值小于等于300 下面给出每个政党的席位数.总席位数小于等于 100000

Output

     你的组阁方案中最多能占多少个席位.

Solution

这道题的意思讲得不明朗啊。大概意思是从若干个数中挑选出几个数,使这些被选出的数之和大于总和的一半,并且满足:被选出的数之和减去这些数中的最小数,得到的值小于总和的一半。然后用f[j]表示当前能不能使得数之和达到j,枚举i个数,若f[j]==true且j<=总数一半,就把j+a[i]标成true。

这里还有一个细节,被选出的数之和减去这些数中的最小数,得到的值小于总和的一半。我们可以先将政党的人数先由大到小排序,我们由大到小枚举,这样就可以保证当前取的一定是所有已取得政党中的最小值。

Code

 #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[],n,ans,sum;
bool f[];
int main()
{
cin>>n;
ans=;
for (int i=;i<=n;i++)
{
cin>>a[i];
sum+=a[i];
}
sort(a+,a+n+);
f[]=true;
for (int i=n;i>=;i--)
for (int j=sum/;j>=;j--)
if (f[j])
{
f[j+a[i]]=true;
if (j+a[i]>ans) ans=j+a[i];
}
cout<<ans<<endl;
return ;
}

Source

http://www.lydsy.com/JudgeOnline/problem.php?id=1334

Baltic2008联合内阁的更多相关文章

  1. BZOJ1334: [Baltic2008]Elect

    1334: [Baltic2008]Elect Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 386  Solved: 201[Submit][Sta ...

  2. BZOJ_1334_[Baltic2008]Elect_DP+语文题

    BZOJ_1334_[Baltic2008]Elect_DP Description N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于 总数的一半 ...

  3. bzoj 1334: [Baltic2008]Elect

    Description N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党 ...

  4. 1334: [Baltic2008]Elect

    Description N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党 ...

  5. BZOJ1334:[Baltic2008]Elect(背包DP)

    Description N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党 ...

  6. 【bzoj1334】[Baltic2008]Elect 背包dp

    题目描述 N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党退出后,其它党 ...

  7. 8.2/baltic神(水)题

    summary:10 bzoj1334: Description N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数 ...

  8. P4394 [BOI2008]Elect 选举

    P4394 [BOI2008]Elect 选举 题目描述 N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好 ...

  9. 转移顺序的艺术 luogu4394 + lougu2966 + luogu3537

    lougu4394: N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党退 ...

随机推荐

  1. swift基础:第四部分:对函数和闭包的深入

    ()之前在什么公司,都自己做过哪些项目,从架构的角度来谈谈你的项目. () 你对iOS不同版本是怎么看的,你在做项目的过程当中,是如何应对版本问题的. () 你对iOS的性能是怎么优化的. () 你通 ...

  2. eclipse for java developer和eclipse for java ee developer的区别

    eclipse是基于插件机制的软件,插件本身是不能启动和操作的,它们需要一个环境,eclipse使用osgi r4规范实现了这个环境. osgi是java动态模块化的规范,该规范不光要让java程序模 ...

  3. css2 [lang|=en] 误区

    [lang|=en] w3c说明:css2选择器,选择以en开头的的lang属性. w3c的这个解释是有误区的,en开头,但是en后面必须要有-,也就是说是选择的是en-开头

  4. uexWeiXin插件

    uexWeiXin插件 接入指引 常用功能 接入指引 Android 准备一个应包名:平台默认包名:org.zywx.wbpalmstar.widgetone.uex加上应用id AppCan平台默认 ...

  5. DELPHI实现百度开放平台

    学习百度语音 百度语音开发平台 http://yuyin.baidu.com/ 百度开发者账号 13600514494,短信登录 应用账号 词语听写 App ID: 7799366 API Key: ...

  6. PL/SQL Developer主数据库连接和窗口连接切换

    Oracle开发者估计对PL/SQL Developer都非常熟悉了,里面有些小的功能点大概还有些初学者没发现.PL/SQL Developer支持多连接多窗口,下面详细说说. 主连接的概念 打开PL ...

  7. Tomcat重启脚本restart.sh停止脚本stop.sh

    Tomcat重启脚本restart.sh停止脚本stop.sh Tomcat本身提供了 startup.sh(启动)shutdown.sh(关闭)脚本,我们在部署中经常会出现死进程形象,无法杀掉进程需 ...

  8. Java设计模式(二)——迭代模式

    迭代模式的基本定义:对于一组对象集合(数组.堆栈.列表或散列),用户无需关心它的底层实现而能够通过调用统一接口遍历当中的所有元素.由于jdk已经对常见的迭代模式实现了封装,本文直接提供Collecti ...

  9. Spring获取bean的工具类

    package com.tech.jin.util; import org.springframework.context.ApplicationContext; import org.springf ...

  10. [原]调试ComFriendlyWaitMtaThreadProc崩溃

    项目里安装了UIA相关的钩子来监听UIA相关事件,退出的时候偶尔会崩溃在ComFriendlyWaitMtaThreadProc中,如下  从上图可以看出 是访问到无效的地址了,用!address 0 ...