Description

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

Input

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

Output

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

Sample Input

4
1 3 2 4

Sample Output

7

HINT

选择第二个政党和第四个

我又开始刷起水题了……
按a[i]从大到小排序,然后背包dp
某一政党退出后席位小等于总数的一半,就是要从j<=s/2的f[j]转移而来
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
#include<set>
#include<map>
#include<ctime>
#define LL long long
#define inf 0x7ffffff
#define pa pair<int,int>
#define pi 3.1415926535897932384626433832795028841971
using namespace std;
inline LL read()
{LL x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
inline void write(LL a)
{if (a<0){printf("-");a=-a;}if (a>=10)write(a/10);putchar(a%10+'0');
}
inline void writeln(LL a){write(a);printf("\n");}
int n,s;
int a[500];
bool f[100010];
int main()
{n=read();for (int i=1;i<=n;i++)a[i]=read(),s+=a[i];sort(a+1,a+n+1,greater<int>());f[0]=1;for (int i=1;i<=n;i++){for (int j=100000;j>=a[i];j--)if (j-a[i]<=s/2){f[j]=f[j]|f[j-a[i]];}}for (int i=100000;i>=0;i--){if (f[i]){printf("%d\n",i);return 0;}}
}

转载于:https://www.cnblogs.com/zhber/p/4167851.html

bzoj1334 [Baltic2008]Elect相关推荐

  1. bzoj1334[Baltic2008]Elect(背包dp)

    1334: [Baltic2008]Elect Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 575  Solved: 333 [Submit][S ...

  2. 一句话题解(20170801~20170125)

    8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...

  3. 【整理向】OJ上一些不(jiao)错(shui)的背包题

    CodeVS 1491 取物品 1047 邮票面值设计 3372 选学霸 1155 金明的预算方案 1014 装箱问题 BZOJ 3407: [Usaco2009 Oct]Bessie's Weigh ...

  4. bzoj1339[Baltic2008]Mafia*

    bzoj1339[Baltic2008]Mafia 题意: 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控.对于每个车站进行布控都需要一定的代价,现在警方希望使用最小的代价控制一些车站,使得 ...

  5. 区别辨析(选择)choose、select、elect、pick、prefer、opt

    这些动词均含有"选择"之意. choose elect select pick prefer opt choose 普通用词,侧重根据个人意愿和判断从众多的对象中进行选择,着重被选 ...

  6. 一直在纠结怎样取出 combox 控件elect的文字

    comboBox1.Text  真心有点坑 转载于:https://www.cnblogs.com/zhaoguanghan/p/4559148.html

  7. 洛谷P4394 [BOI2008]Elect 选举 题解

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

  8. 1163: [Baltic2008]Mafia

    扫了一眼题,看到数据范围200,理所当然想到了网络流... 一开始看题以为是费用流... 但是仔细一想并不能用费用流,应该是个最小割. 考虑把每个点拆成两个点即x ,x`,那么在x -> x`连 ...

  9. [Baltic2008]Mafia

    题目 传送门 to BZOJ 题目概要 nnn 个点.mmm 条边的无向图,找一些点,使得删去这些点后,aaa 和 bbb 不连通.最小化点权和. 数据范围与约定 2≤n≤200,1≤m≤200002 ...

最新文章

  1. templateclass T函数模板
  2. mycat是什么_MYCAT学习2
  3. 计算机组成原理:储存系统和结构
  4. 蛙蛙推荐:几种典型的生产环境调试场景
  5. 【完整可运行源码+GIF动画演示】十大经典排序算法系列——冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序
  6. python sort 多级排序_Python sort和class实现多级排序
  7. Django实战(1):需求分析和设计
  8. Python学习笔记(三)Python安装及设置环境变量
  9. 谷歌云端语音识别助手手机版-Google云端语音识别app1.0.0 官方安卓版-东坡下载...
  10. 小米路由器安装MT工具箱(图文教程)
  11. 【IDE】IAR for ARM官网下载链接(包含一些历史版本)
  12. 阿里巴巴内部不再公开“P”序列职级
  13. EffectiveC++-条款54:让自己熟悉包括TR1在内的标准程序库
  14. “爱心银行”让爱心增值(转自中国文明网)
  15. Python基础-19-魔法方法(常用)
  16. Visual Studio 2008 无法安装解决办法
  17. 2020大学生安全教育网课课后答案
  18. 推荐系统入门(四):WideDeep(附代码)
  19. 毕设分享:基于STM32两轮自平衡小车 含源码、原理图及PCB文件
  20. 动词、名词、形容词还有什么词

热门文章

  1. 掌握 Ajax,第 11 部分: 服务器端的 JSON
  2. 精通Android自定义View(四)自定义属性使用详解
  3. Mr.J-- jQuery学习笔记(二十三)--applycall
  4. 微型计算机接口技术与汇编语言课后答案
  5. 逃跑吧少年辅助快乐羊儿吧
  6. An end-to-end TextSpotter with Explicit Alignment and Attention
  7. [目录]搭建一个简单的WebGIS应用程序
  8. Android 蓝牙模块
  9. LUCK——组合数学
  10. 如何玩转sortablejs-vuedraggable实现表单嵌套拖拽功能