bzoj 1816: [Cqoi2010]扑克牌 二分
来源:互联网 发布:印刷报价软件好用吗 编辑:程序博客网 时间:2024/05/21 17:18
题意
你有n种牌,第i种牌的数目为ci。另外有一种特殊的牌:joker,它的数目是m。你可以用每种牌各一张来组成一套牌,也可以用一张joker和除了某一种牌以外的其他牌各一张组成1套牌。比如,当n=3时,一共有4种合法的套牌:{1,2,3}, {J,2,3}, {1,J,3}, {1,2,J}。 给出n, m和ci,你的任务是组成尽量多的套牌。每张牌最多只能用在一副套牌里(可以有牌不使用)。
n<=50,ci<=5e8
分析
一开始想到一个复杂一点点的贪心,后来发现二分会更简洁。
代码
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;int n,m,a[55],ans;bool check(int x){ int tmp=min(m,x); for (int i=1;i<=n;i++) if (a[i]<x) { tmp-=x-a[i]; if (tmp<0) return 0; } return 1;}int main(){ scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) scanf("%d",&a[i]); int l=1,r=1000000000; while (l<=r) { int mid=(l+r)/2; if (check(mid)) l=mid+1; else r=mid-1; } printf("%d",l-1); return 0;}
阅读全文
0 0
- bzoj 1816: [Cqoi2010]扑克牌 二分
- 【bzoj 1816】: [Cqoi2010]扑克牌
- [CQOI2010] BZOJ 1816 扑克牌
- 【bzoj1816】【cqoi2010】【扑克牌】【二分答案】
- [BZOJ1816] [CQOI2010][二分][贪心]扑克牌
- 【二分】BZOJ1816(Cqoi2010)[扑克牌]题解
- BZOJ1816(Cqoi2010)[扑克牌]--二分答案
- 【二分+贪心】BZOJ1816 [Cqoi2010]扑克牌
- 1816: [Cqoi2010]扑克牌
- 1816: [Cqoi2010]扑克牌
- 【BZOJ】【P1816】【Cqoi2010】【扑克牌】【题解】【水题】
- bzoj1816[Cqoi2010]扑克牌 二分答案+构造
- 【Cqoi2010】扑克牌
- 【BZOJ1816】【Cqoi2010】扑克牌 二分答案+贪心+构造(证明)
- [BZOJ1816][Cqoi2010]扑克牌
- BZOJ1816: [Cqoi2010]扑克牌
- bzoj1816: [Cqoi2010]扑克牌
- BZOJ 1816 扑克牌
- QT Create 学习之 QTreeWidget--新建节点及样式设置
- win7+tensorflow:ImportError: No module named '_pywrap_tensorflow_internal'
- 游刃有虞
- 图文详解 IntelliJ IDEA 15 创建普通 Java Web 项目
- 负载均衡的6种算法
- bzoj 1816: [Cqoi2010]扑克牌 二分
- 习题3.12
- 整数中1出现的次数
- 线段树--区间修改set,区间更新add
- bzoj4403 序列统计 ( 组合数学 + lucas )
- MySQL
- 三扇门的问题
- 初识JDBC
- 访问权限修饰符private、protected、default、private图解