蓝桥杯2022年第十三届决赛真题-卡牌——二分法

简介: 蓝桥杯2022年第十三届决赛真题-卡牌——二分法

原题链接:https://www.dotcpp.com/oj/submit_status.php?sid=12243918


马上就要进行第十四届蓝桥杯国赛了,自从打完省赛后就没有怎么刷过题了,这两天想了想,感觉还是得多刷点题,争取在这次国赛中拿个三等奖。


题目描述:

这是一道二分的算法题,我第一次写这道题的时候并没有通过所有测试用例,起初我把n,m等变量改成longlong类型,但还是不行,后来发现这是因为二分的时候控制边界等问题,我总是会把这里写错,后来我又看了下以前写的二分模板题:


二分 :数的范围_夏微凉(●'◡'●)的博客-CSDN博客


我又重新写了下,于是就能通过了。


AC后的感觉是真的好爽 😊

把我的代码给献上:

#include<iostream>
using namespace std;
long long int n, m;
long long int a[200010], b[200010];
bool check(int k)
{
  long long int count = 0;
  for (int i = 0; i < n; i++)
  {
    if (a[i] < k)
    {
      if (k - a[i] > b[i])
      {
        return false;
      }
      count += k - a[i];
    }
  }
  if (count > m)
  {
    return false;
  }
  else
  {
    return true;
  }
}
int main()
{
  cin >> n >> m;
  for (int i = 0; i < n; i++)
  {
    cin >> a[i];
  }
  for (int i = 0; i < n; i++)
  {
    cin >> b[i];
  }
  long long int left = 0, right = 20000000;
  while (left<right)
  {
    long long int mid = (left + right +1) / 2;
    if (check(mid) == true)
    {
      left = mid;
    }
    else
    {
      right = mid - 1;
    }
  }
  cout << right<< endl;
  return 0;
}
目录
相关文章
|
5月前
2022蓝桥杯大赛软件类国赛真题 卡牌
2022蓝桥杯大赛软件类国赛真题 卡牌
24 0
|
机器学习/深度学习 人工智能 算法
第十一届蓝桥杯大赛软件类决赛 C++ B组 题解(二)
第十一届蓝桥杯大赛软件类决赛 C++ B组 题解
137 0
|
人工智能 测试技术 C++
第十一届蓝桥杯大赛软件类决赛 C++ B组 题解(一)
第十一届蓝桥杯大赛软件类决赛 C++ B组 题解
192 0
|
算法 测试技术 Python
第十二届蓝桥杯《杨辉三角》-二分法
第十二届蓝桥杯《杨辉三角》-二分法
95 0
蓝桥杯:二分法求分巧克力
蓝桥杯:二分法求分巧克力
65 0
题目 2664: 蓝桥杯2022年第十三届省赛真题-求和
题目 2664: 蓝桥杯2022年第十三届省赛真题-求和
|
测试技术
题目2674:蓝桥杯2022年第十三届省赛真题-求阶乘
题目2674:蓝桥杯2022年第十三届省赛真题-求阶乘
|
存储 C++
2020 第十一届蓝桥杯大赛软件赛决赛,国赛,C/C++大学B组题解
2020 第十一届蓝桥杯大赛软件赛决赛,国赛,C/C++大学B组题解
125 0