蓝桥杯每日一题2023.9.12

蓝桥杯2022年第十三届决赛真题-卡牌 - C语言网 (dotcpp.com)

题目描述

这天,小明在整理他的卡牌。

他一共有 n 种卡牌,第 i 种卡牌上印有正整数数 i(i ∈ [1, n]),且第 i 种卡牌 现有 ai 张。

而如果有 n 张卡牌,其中每种卡牌各一张,那么这 n 张卡牌可以被称为一 套牌。小明为了凑出尽可能多套牌,拿出了 m 张空白牌,他可以在上面写上数 i,将其当做第 i 种牌来凑出套牌。然而小明觉得手写的牌不太美观,决定第 i 种牌最多手写 bi 张。

请问小明最多能凑出多少套牌?

分析

答案具有单调性!!!答案具有单调性!!!答案具有单调性!!!

二分二分二分!!!

注意long long

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e7 + 10;
ll n, m, a[N], b[N];
bool check(int mid)
{
	ll cnt = 0;
	for(int i = 1; i <= n ; i ++)
	{
		if(mid > a[i] + b[i])return false;
		if(a[i] < mid)cnt += mid - a[i];
	}
	if(cnt > m)return false;
	return true;
}
int main()
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	cin >> n >> m;
	for(int i = 1; i <= n; i ++)
	{
		cin >> a[i];
	}
	for(int i = 1; i <= n; i ++)
	{
		cin >> b[i];
	}
	ll l = 0, r = 0x3f3f3f;
	while(l + 1 != r)
	{
		int mid = (l + r) >> 1;
		if(check(mid))l = mid;
		else r = mid;
	}
	cout << l;
	return 0;
}
相关推荐
敲代码的嘎仔43 分钟前
Java后端面试——SSM框架面试题
java·面试·职场和发展·mybatis·ssm·springboot·八股
仰泳的熊猫4 小时前
题目2571:蓝桥杯2020年第十一届省赛真题-回文日期
数据结构·c++·算法·蓝桥杯
逆境不可逃5 小时前
LeetCode 热题 100 之 33. 搜索旋转排序数组 153. 寻找旋转排序数组中的最小值 4. 寻找两个正序数组的中位数
java·开发语言·数据结构·算法·leetcode·职场和发展
杰克尼6 小时前
七天速刷面试--day03
面试·职场和发展
云泽8086 小时前
蓝桥杯算法精讲:倍增思想与离散化深度剖析
算法·职场和发展·蓝桥杯
清风徐来QCQ6 小时前
全栈开发面试1
面试·职场和发展
nglff7 小时前
蓝桥杯抱佛脚第四天|前缀和,差分对应练习
算法·职场和发展·蓝桥杯
_饭团8 小时前
字符串函数全解析:12 种核心函数的使用与底层模拟实现
c语言·开发语言·学习·考研·面试·蓝桥杯
想吃火锅10058 小时前
【leetcode】105. 从前序与中序遍历序列构造二叉树
算法·leetcode·职场和发展
前端摸鱼匠8 小时前
面试题4:多头注意力(MHA)相比单头注意力的优势是什么?Head数如何影响模型?
人工智能·ai·面试·职场和发展·求职招聘