LUOGU P4394 [BOI2008]Elect 选举 (背包)
解题思路
一眼看上去就像个背包,然后就是\(0/1\)背包改一改,结果发现过不了样例。后来想了一下发现要按\(a\)从大到小排序,因为如果对于一个>=总和的一半但不满足的情况来说,把最小的去掉也一定>=总和的一半。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int MAXN = 305;
inline int rd(){
int x=0;char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return x;
}
int n,f[MAXN][100005],a[MAXN],Sum;
inline bool cmp(int x,int y){
return x>y;
}
int main(){
n=rd();
for(int i=1;i<=n;i++) a[i]=rd(),Sum+=a[i];
sort(a+1,a+1+n,cmp);
f[0][0]=1;
for(int i=1;i<=n;i++)
for(int j=0;j<=Sum;j++){
f[i][j]|=f[i-1][j];
if(j>=a[i] && j-a[i]<=Sum/2) f[i][j]|=f[i-1][j-a[i]];
}
for(int i=Sum;i;i--)
if(f[n][i]) {printf("%d",i);return 0;}
}
LUOGU P4394 [BOI2008]Elect 选举 (背包)的更多相关文章
- P4394 [BOI2008]Elect 选举
P4394 [BOI2008]Elect 选举 题目描述 N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好 ...
- [BOI2008]Elect 选举
背包. #include <algorithm> #include <iostream> #include <cstdlib> #include <cstri ...
- day 2上午 elect 选举 背包
#include<iostream> using namespace std; int n; ; ]; long long p[maxn]; long long dp[maxn][maxn ...
- [BOI2008] Elect - 背包dp
u1s1我一开始理解错了题 然后基本就相当于一个背包dp了 #include <bits/stdc++.h> using namespace std; int n,tot,a[305],f ...
- [Luogu P1450] [HAOI2008]硬币购物 背包DP+容斥
题面 传送门:https://www.luogu.org/problemnew/show/P1450 Solution 这是一道很有意思的在背包里面做容斥的题目. 首先,我们可以很轻松地想到暴力做背包 ...
- Luogu P1757 通天之分组背包
题目背景 直达通天路·小A历险记第二篇 题目描述 自01背包问世之后,小A对此深感兴趣.一天,小A去远游,却发现他的背包不同于01背包,他的物品大致可分为k组,每组中的物品相互冲突,现在,他想知道最大 ...
- luogu||P1776||宝物筛选||多重背包||dp||二进制优化
题目描述 终于,破解了千年的难题.小FF找到了王室的宝物室,里面堆满了无数价值连城的宝物……这下小FF可发财了,嘎嘎.但是这里的宝物实在是太多了,小FF的采集车似乎装不下那么多宝物.看来小FF只能含泪 ...
- luogu P4389 付公主的背包
传送门 神仙题鸭!orz dkw 暴力就是完全背包 而完全背包可以和生成函数扯上关系,记第i种物品质量为\(a_i\),那么这种物品的生成函数\(G(i)=\sum_{j=0}^{\infty}x^{ ...
- Luogu 1273 有线电视网 - 树形背包
Description 树形背包, 遍历到一个节点, 枚举它的每个子节点要选择多少个用户进行转移. Code #include<cstring> #include<cstdio> ...
随机推荐
- 从零开始搭建系统1.3——Tomcat安装及配置
首先安装jdk,手动解压JDK的压缩包,然后设置环境变量 1.卸载自带openjdk 查询OpenJDK rpm -qa|grep java 批量卸载所有名字包含jdk的已安装程序.命令行: rpm ...
- [LOJ#2732] 「JOISC 2016 Day 2」雇佣计划
参考博文 (不过个人感觉我讲的稍微更清楚一点) 题目就是让我们求图中满足数值大于等于B的连通块数量 然后我们可以尝试转换为求连通块两端所产生的“谷”的数量,显然一个连通块对谷可以贡献2的答案,最终答案 ...
- 使用 Google Chrome 数据抓包方式免费下载收费音乐
对于每个有音乐细胞的 boys & girls 来说,听音乐的时候是不是会经常遇到如下图的问题. 自从音乐进入正版之后,很多歌曲只有付费用户才可以下载.虽然可以在线听,可是以我的倔脾气,就是喜 ...
- 使用Git 上传文件到云端(版本库)
第一步:本地初始化Git版本库 git init 第二步:链接码云(云端) git remote add orgin "你的远程仓库地址"(复制链接后结尾是.git,如果没有记得加 ...
- Java笔记目录
目录 一.Java语言概述... 1 1.计算机语言发展史... 1 1.1计算机语言的发展... 1 1.2人与计算机做交互... 1 1.3计算机语言... 1 1.4软件... 1 2.Java ...
- [HL] 7.5 集训总结
对于某唤做赛区难度的题,我只能是内流满面..拿到题,A神题不可做,B,神题不可做,C,神题不可做...最后yy了一个A的算法...只得了20 TAT.C题骗分似乎有50 ..B题本来想骗分..然后/ ...
- thinkphp 多语言支持
ThinkPHP内置多语言支持,如果你的应用涉及到国际化的支持,那么可以定义相关的语言包文件.任何字符串形式的输出,都可以定义语言常量. 要启用多语言功能,需要配置开启多语言行为,在应用的配置目录下面 ...
- Python Django主机管理
1.新建一个django project项目 django-admin startproject DjangoWeb 2.新建app python manage.py startapp master ...
- delphi里为程序任务栏右键菜单添加自定义菜单
本文讲解的是为自身程序的任务栏右键菜单里添加自己定义的菜单的方法: delphi添加任务栏右键菜单 procedure TForm1.FormCreate(Sender: TObject); var ...
- NX二次开发-NXOPEN_DimensionCollection遍历图纸上的所有标注尺寸
NX11+VS2013 #include <NXOpen/Drawings_DrawingSheet.hxx> #include <NXOpen/Drawings_DrawingSh ...