1334: [Baltic2008]Elect
Description
Input
Output
Sample Input
1 3 2 4
Sample Output
HINT
选择第二个政党和第四个
题解:这道题我们使用f的bool数组来表示到第[i]个政党为止,能否达到j个人,比如若f[3][5]==true,则表示到第三个政党为止能够占五个席位。当然这里其实并不需要第一维,具体方程式:用a[i]表示当前枚举的政党人数,若f[j-a[i]]==true(若政党人数能达到j-a[i]个人),则a[i]==true;
这里要注意一点,因为某个政党退出后,其他政党人数需小于总和一半,其实就是最小的一个政党退出后,其他政党的人数需小于总和一半,那么我们如何得知当前情况下的最小政党呢?可以先将政党的人数先由大到小排序,我们由大到小枚举,这样就可以保证当前取的一定是所有已取得政党中的最小值。
具体程序看程序。
#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/+a[i];j>=a[i];j--)//使j-a[i]一定小于等于总数的一半
if (f[j-a[i]])//如果说存在j-a[i]的席位数
{
f[j]=true;//那么也一定存在j的席位数
if (j>ans) ans=j;//判断是否为最大值
}
cout<<ans<<endl;//因为题目一定有答案,所以不用去担心ans是否大于总数的一半,直接输出即可
return ;
}
1334: [Baltic2008]Elect的更多相关文章
- bzoj 1334: [Baltic2008]Elect
Description N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党 ...
- BZOJ1334: [Baltic2008]Elect
1334: [Baltic2008]Elect Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 386 Solved: 201[Submit][Sta ...
- 【贪心+背包】BZOJ1334 [Baltic2008]Elect
Description 从N个数中选出任意个数且和尽量大,但要满足去掉任意一个和就小于总和的一半.n<=300, ai<=1e5. Solution 这个条件其实就是 去掉选出的最小的一个 ...
- BZOJ1334:[Baltic2008]Elect(背包DP)
Description N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党 ...
- 【bzoj1334】[Baltic2008]Elect 背包dp
题目描述 N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党退出后,其它党 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- Baltic2008联合内阁
Description N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如 ...
- [BZOJ1163][BZOJ1339][Baltic2008]Mafia
[BZOJ1163][BZOJ1339][Baltic2008]Mafia 试题描述 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控. 对于每个车站进行布控都需要一定的代价,现在警方希望使用 ...
- csuoj 1334: 好老师
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1334 1334: 好老师 Time Limit: 1 Sec Memory Limit: 128 ...
随机推荐
- go 的 protoc 插件调用逻辑
要让protoc使用插件,需要做下面事情: Place the plugin binary somewhere in the PATH and give it the name "proto ...
- 我的ZJ解题心得
想要学好程序设计第一是要养成你的编程思维,也就是你对编程的一种概念和思维定式,长期的解题会让你产生解题经验进而形成一种思维定式,比如看到一个题目就立即想出这题要用什么方法解题这样.编程思维我认为还包括 ...
- mysql数据库连接方式(.net)
1.通过ado.net连接(数据库连接串中库名称为中文无法使用) 需要添加MySql.Data.dll(可通过安装mysql-connector-net-6.8.3.mis获得) 引用MySql.Da ...
- 注册页面JS前台校验
运行效果图: HTML代码: <script> function checkForm(){ //校验用户名 //获得用户名文本框的值 var username=document.getEl ...
- oracle10g配置小记
因对接HIS系统,对方提供了视图.故此我拿起多年不用的ORACLE. 初始安装一切正常,然后打开Net Configuration Assistant配置监听程序. 接着配置 本地NET服务名配置 打 ...
- springMVC操作mongoDB增删改查
下面是mongoDb简单的增删改查(新闻类) 附:query.addCriteria(Criteria.where("modelId").ne("").ne(n ...
- 洛谷P3367 【模板】并查集
P3367 [模板]并查集 293通过 551提交 题目提供者HansBug 标签 难度普及- 提交 讨论 题解 最新讨论 不知道哪错了 为啥通不过最后三个节点 题解 不懂为什么MLE 最后一个数 ...
- 浅析Linux下的/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc文件
转自:http://www.ahlinux.com/shell/20239.html 0x01 /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/e ...
- Python之路【第十六篇】:Django【基础篇】
Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了O ...
- python异常处理、反射、socket
一.isinstance 判断对象是否为类的实例 n1 = print isinstance(n1,int) class A: pass class B(A): pass b= B() print i ...