【每日一题】扑克牌

[CQOI2010]扑克牌

https://ac.nowcoder.com/acm/problem/19916

题意

有n种扑克牌,每种有ci个。还有m张王牌。可以代替其中任一张。最多可以造出几个套牌(每副牌只能用一次)。

solution

典型的二分答案,每副牌只能使用一次,所以限制使用的王牌数为 ,每种牌不够 张需要王牌补,计算使用的王牌数为图片说明判断是否满足条件即可。

Code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, m, a[105];

bool check(ll x) {
  ll cnt = min(m, x);
  for (ll i = 1; i <= n; i++) cnt -= max(x - a[i], 0LL);
  return cnt >= 0;
}

int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; i++) cin >> a[i];
  ll l = 0, r = 1e9, mid;
  while (l + 1 < r) {
    mid = l + r >> 1;
    if (check(mid))
      l = mid;
    else
      r = mid;
  }
  cout << l << '\n';
  return 0;
}
全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务