扑克牌
思路

这题也是二分!!

我们二分有几套牌,然后再去检验是否符合,至于怎么想到的,不要问我,我也不知道

那么我们主要解决的就是check函数

我们将二分的套数和每种牌的数量进行比较,如果该种牌的数量大于mid,我们就不用管,如果小于的话我们就要将差值相加(代表我们要使用多少张鬼牌)

统计完后我们就判断对吧,我们判断我们统计出来所需要的鬼牌数量是否满足于小于题目给的鬼牌数量的同时也要小于mid,如果满足就返回mid(其实我最开始不懂这里,后来才知道只有统计出来的数小于mid,才可能满足题目的要求,即每套牌只能出现一张鬼牌)

代码就特别简单啊

代码
#include<bits/stdc++.h>
#define ll long long
#define FOR(i,a,b) for(register int i=a;i<=b;i++)
#define ROF(i,a,b) for(register int i=a;i>=b;i--)
using namespace std;
int n,m;
int a[];
int scan()
{
int as=,f=;
char c=getchar();
while(c>''||c<''){if(c=='-') f=-;c=getchar();}
while(c>=''&&c<=''){as=(as<<)+(as<<)+c-'';c=getchar();}
return as*f;
}
bool chek(int mid)
{
ll tot=;
FOR(i,,n) if(a[i]<mid) tot+=mid-a[i];
if(tot<=min(m,mid)) return ;
return ;
}
int main()
{
n=scan();
m=scan();
int maxx=;
FOR(i,,n)
{
a[i]=scan();
maxx=max(a[i],maxx);
}
int l=,r=maxx+m+,ans=;
while(l<r)
{
int mid=(l+r)>>;
if(chek(mid))
{
ans=mid;
l=mid+;
}
else r=mid;
}
cout<<ans;
return ;
}

最新文章

  1. Linux学习日记(二)
  2. 使用 jQuery Ajax 在页面滚动时从服务器加载数据
  3. SPIRE.DOC - .NET开发者的福利
  4. ahjesus web动态icon
  5. PuTTY配置
  6. Unity3d Asset Server启动问题
  7. Laravel 5 数据库迁移文件示例
  8. js swipe 图片滑动控件实现 任意尺寸适用任意屏幕
  9. php页面显示空白
  10. Gradle[1]gradle distZip时,增加目录信息到zip中
  11. uptime
  12. Unity 绘图性能优化 - Draw Call Batching
  13. 51nod_1040:最大公约数之和(数论)
  14. linux 下安装php curl扩展
  15. MyEclipse10中配置WebLogic10
  16. WebGL之通过外部传入a_PontSize值改变点着色器vshader内置变量gl_PointSize的值
  17. webstorm配置eslint【标记错误,修复错误】
  18. pandas学习笔记(一)
  19. mysql----Nested SELECT Quiz
  20. DBCA静默方式建库

热门文章

  1. C++怎么用二维数组作为形参传入
  2. js学习日记-new Object和Object.create到底干了啥
  3. safari 移动下开启 滚定回弹
  4. Python 3基础教程21-列表和元组
  5. jmeter☞文件目录(一)
  6. TTY锁屏与解锁
  7. day-8 python自带库实现ID3决策树算法
  8. HDU 4745 Two Rabbits(最长回文子序列)(2013 ACM/ICPC Asia Regional Hangzhou Online)
  9. lintcode-96-链表划分
  10. js调用本地office打开服务器的office文件预览