2023蓝桥杯c++ b组真题(附题目与逐步解析)

第三题 冶炼金属

#include <bits/stdc++.h>
using namespace std;
//int A[1e9],B[1e9]
vector<int> A,B; 
int L=0;
bool check_min(int V)
{
  for(int i=0;i<L;i++)
  {
    if(A[i]/V>B[i]) return false;
  }
  return true;
}

bool check_max(int V)
{
  for(int i=0;i<L;i++)
  {
    if(A[i]/V<B[i]) return false;
  }
  return true;
}
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);

  cin >> L;
  for(int i=0;i<L;i++)
  {
  	int tmp1,tmp2;
  	cin>>tmp1>>tmp2;
  	A.push_back(tmp1);
  	B.push_back(tmp2);		
  }
  // 请在此输入您的代码
  int l=0,r=1e9+1;
  int v_min=0,v_max=0;
  while(l<=r)//寻找左边界
  {
    //cout << "1";
    int mid=l+r>>1;
    if(check_min(mid) == true)
    {
      //cout <<mid<<endl;
      v_min = mid;
      r=mid-1;
    }
    else
    {
      l=mid+1;
    }
  }
  l=0,r=1e9+1;//注意为什么不是1e4而是1e9 写的时候一定要清醒
  while(l<=r)//寻找右边界//等于号不能丢啊
  {
    //cout << "2";

    int mid=l+r>>1;
    if(check_max(mid) == true)
    {
      //cout <<mid<< endl;
      v_max = mid;
      l=mid+1;
    }
    else
    {
      //cout << mid;
      r=mid-1;
    }
  }
  cout << v_min <<" " << v_max;
  return 0;
}

 

第四题 飞机降落

 

#include<bits/stdc++.h>
using namespace std;
int N=0;
vector<int> T,D,L;
char bool_vector[20] = {0};
int have_anser = 0;
void slove(int n,int n_max,int tim,vector<int>& pl)//当前飞机的降落的个数,和当前的时间
{
  ///cout << n;
  if(n == n_max)
  {
    //cout << "YES" << endl;
    have_anser = 1;
    return;
  }

  for(int i=0;i<n_max;i++)
  {
    if(pl[i]==0&&tim <= (T[i]+D[i]) ) //这里的等于情况是可以的,不然测试用例部分过不去
    {
      //cout << i <<endl;
      if(have_anser == 1) return; 
      pl[i] = 1;
      slove(n+1,n_max,max(tim,T[i])+L[i],pl);
      pl[i] = 0;
    }
  }
  return;
}
int main()
{

  // 请在此输入您的代码
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> N;
  for(int i=0;i<N;i++)
  {
    int M=0;
    cin >>M;
    for(int j=0;j<M;j++)
    {
      int t,d,l;
      cin >> t >> d >>l;
      T.push_back(t);
      D.push_back(d);
      L.push_back(l);
    }
    vector<int> pl;
    pl.resize(M,0);
    slove(0,M,0,pl);//处理当前这组数据
    if(have_anser == 0) cout << "NO" <<endl;
    if(have_anser == 1) cout << "YES" <<endl;
    have_anser = 0;
    //清楚当前的容器
    T.clear();
    D.clear();
    L.clear();
  }
  // //cout << "YES" << endl << "NO" << endl;
  // for(int i=0;i<N;i++)
  // {
  //   if(bool_vector[i]==1)
  //   cout << "YES" << endl;
  //   else
  //   cout << "NO" << endl;
  // }
  return 0;
}

最近更新

  1. TCP协议是安全的吗?

    2024-03-28 21:38:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-28 21:38:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-28 21:38:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-28 21:38:05       20 阅读

热门阅读

  1. Makefile学习

    2024-03-28 21:38:05       17 阅读
  2. 深度学习入门2——Linear & DeepLearning Intro

    2024-03-28 21:38:05       18 阅读
  3. 图像识别在工业检测中的应用

    2024-03-28 21:38:05       18 阅读
  4. 矩阵理论的概念间的组合关系的公式

    2024-03-28 21:38:05       16 阅读
  5. Spring和Spring Boot的区别

    2024-03-28 21:38:05       20 阅读
  6. vue2 elementui动态必填项

    2024-03-28 21:38:05       17 阅读
  7. QT TCP和UDP网络编程

    2024-03-28 21:38:05       21 阅读