卡牌——蓝桥杯十三届2022国赛大学B组真题

在这里插入图片描述

样例输入
4 5
1 2 3 4
5 5 5 5
样例输出
3
样例说明

这 5 张空白牌中,拿2张写1,拿1张写2,这样每种牌的牌数就变为了3,3,3,4, 可以凑出 3套牌,剩下2张空白牌不能再帮助小明凑出一套。
评测用例规模与约定
对于30%的数据,保证n ⩽ \leqslant 2000;
对于100%的数据,保证n ⩽ \leqslant 2 × 1 0 5 \times 10^{5} ×105 ; a i , b i ⩽ a_{i},b_{i}\leqslant ai,bi 2n;m ⩽ \leqslant n 2 ^{2} 2.

运行限制
  • 最大运行时间:1s
  • 最大运行内村:521M

问题分析

可以想象成一个木桶问题:每张卡牌的a值实际上就是木桶的每一块木板的高度,而d值就是此块木板还能延长的长度,而输入的m就是现有的木料,该问题实际上就是问我应该如何合理使用我有的木料来延长木板使得木桶能装的水的高度最高。众所周知木桶能装的水取决于最短的那块木板,因此要尽量拔高木板的下限。

方法一

将所有卡牌按照a的大小从小到大依次排列,然后从左到右依次遍历,模拟此过程:若左边牌的牌数比下一张牌的牌数要少,我们要拔高下限,则就要使左边牌的牌数尽可能接近右边的牌数,最好相等,若相等,则继续往下遍历否则退出循环。

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef long long LL;
struct node{//记录a值和b值int a,b;bool operator<(const node &nd)const{if(a!=nd.a)return a<nd.a;return b<nd.b;}
};
int main() {int n,ans,mind;//ans:最后的答案也就是所有牌数的下限,mind:左边牌的最小d,也就是左边牌还能一起每张增加的牌数LL m;cin>>n>>m;vector<node> vec(n);for(int i=0;i<n;i++){cin>>vec[i].a;}for(int i=0;i<n;i++){cin>>vec[i].b;}sort(vec.begin(),vec.end());//将每张牌排序ans=vec[0].a;//初始化mind=vec[0].b;int i=1;for(i=1;i<n;i++){if(vec[i].a!=vec[i-1].a){//如果左边牌数少于此牌的牌数if(vec[i-1].a+mind<vec[i].a||m<i*(vec[i].a-vec[i-1].a))break;//如果左边的牌数无法与此牌牌数相等则退出循环m-=i*(vec[i].a-vec[i-1].a);//m要减少i*(vec[i].a-vec[i-1].a)张牌:左边有i种牌,并且都与第i张牌的牌数差vec[i].a-vec[i-1].a张ans=vec[i].a;//更新左边牌平均数数mind-=(vec[i].a-vec[i-1].a);//更新最小d值}mind=min(mind,vec[i].b);//更新最小d值}ans+=min((int)(m/i),mind);//将最后剩余的牌均分给左边牌cout<<ans<<endl;return 0;
}

方法二

用优先队列每次从中选出a值最小的那种牌,然后给它手写一张,直到不能手写为止(d=0||m==0)

#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int,int> PII;
const int N = 200010;
int n;
long long m;
int a[N],b[N];
int main()
{cin>>n>>m;priority_queue<PII,vector<PII>,greater<PII>> q;for(int i = 0;i<n;i++){cin>>a[i];}for(int i = 0;i<n;i++){cin>>b[i];q.push({a[i],b[i]});}while(m){auto t = q.top();if(t.y == 0){//不能再手写了break;}q.pop();t.x++;//a++t.y--;//d--m--;q.push({t.x,t.y});}cout<<q.top().x<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/8975.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Baidu Comate:智能编码,编程效率的革新者

文章目录 一、何为智能编码助手&#xff1f;二、Baidu Comate智能编码助手简介三、Baidu Comate注册四、Baidu Comate体验Comate插件功能1.注释生成代码2.函数注释生成3.行间注释生成4.生成代码解释5. 调优建议 五、插件功能的使用体验感受和建议 &#x1f6a9;结语 一、何为智…

JS中的扩展运算符...

JS中的…是扩展运算符&#xff0c;是es6的新语法&#xff1b; 其作用在对象上&#xff0c;返回一个对象&#xff0c;取出对象所有可遍历属性&#xff1b; 场景1&#xff1a; let person { name:张三&#xff0c;age:18}let someone {...person}console.log(someone) //返回 {…

走进标杆企业 | 山东国屹建材实现双站一体化管理

走进标杆企业 走进标杆企业&#xff0c;感受名企力量&#xff0c;探寻学习优秀企业领先之道。本期要跟砼行们推介的标杆企业是山东国屹新型建材有限公司。 山东国屹新型建材有限公司成立于2018年&#xff0c;共建有两个站点、四条混凝土生产线&#xff0c;预拌混凝土实际日产…

手写SpringBoot核心功能流程

本文通过手写模拟实现一个简易版的Spring Boot 程序&#xff0c;让大家能以非常简单的方式知道Spring Boot大概的工作流程。 工程依赖 创建maven工程&#xff0c;并创建两个module springboot模块&#xff1a;手写模拟springboot框架的源码实现 test模块&#xff1a;业务系统…

【GDAL应用】基于rasterstats的矢量数据分区统计栅格值信息

文章目录 1 实现效果2 实现功能3 实现代码 1 实现效果 矢量数据&#xff1a; 栅格数据&#xff1a;只有一个value值&#xff08;像素值或DN值&#xff09;&#xff0c;为1&#xff0c;计算统计时nodata作为0值处理。 输出结果&#xff1a; 2 实现功能 基于单波段的栅格数…

代码随想录刷题打卡day22

1 最大二叉树 使用递归的思路构造二叉树&#xff0c;一般选择前序遍历对树进行构造&#xff0c;需要先构造中间节点&#xff0c;然后递归构造左子树和右子树。 三部曲 确定递归函数的参数和返回值 参数传入的是存放元素的数组&#xff0c;返回该数组构造的二叉树的头结点&…

英语单词学习

house of worship:宗教场所 dote: 喜爱 coffin:棺材 coffeine:咖啡因 expedient:权宜的 buster:破坏者 procrastinate: 拖延 gourmet:美食家 expound:阐述 narcissist:自我陶醉 assassinate:暗杀 salvage: 挽救 savage: 凶猛的 ulcer: 溃疡 obituary:讣告 arbitrary:武断的 abu…

关于勒索攻击,绝大多数企业存在的三个认知误区

网络空间&#xff0c;有一个挥之不去的“幽灵”&#xff0c;它的名字就叫勒索攻击。 近年来&#xff0c;企业遭受勒索攻击的事件被频频曝光。就在不久前&#xff0c;国家安全部曝光了一起境外黑客组织对我国某高新科技企业实施勒索攻击的案例&#xff0c;该企业的相关信息化系统…

Java云商城系统 云端商城 一站式系统Java源码 云商城自助下单平台 云商城虚拟交易网

内容目录 一、详细介绍二、效果展示2.效果图展示 三、学习资料下载 一、详细介绍 云商城系统&#xff0c;无后门&#xff0c;一站式系统Java源码&#xff0c;心权益商品数量不限数量 系统对接 手动发货 自动发货 兑 换 码 订单监控 商品监控 对象存储 邮箱提醒 加价模板 密价…

【javascript】判断元素是否在可视区域内

根据元素到窗口顶部距离判断 el.offsetTop - scrollTop < windowHeight function isInViewPortOfOne (el) {// viewPortHeight 兼容所有浏览器写法const viewPortHeight window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight con…

C语言输出重定向

#include <windows.h> #include <stdio.h> // 定义一个回调函数&#xff0c;用于处理输出的文本 BOOL WINAPI ConsoleOutputCallback( _In_ char const* lpOutput, _In_ DWORD nNumberOfCharsToWrite, _Out_ LPDWORD lpNumberOfCharsWritten, _I…

【ElementUI -- 优化小技巧系列】 -- el-tree 节点内容过长优化 以及选中默认节点

在使用elementui过程中经常碰到关于样式的问题&#xff0c;我曾经很喜欢通过类名修改css样式来做&#xff0c;其实原生封装的elementui库的样式对于普通开发来说已经足够了&#xff0c;通过类名修改css只会让组件臃肿难以维护&#xff0c;现在真的越来越怕写css&#xff0c;经常…

限流算法学习

文章目录 限流算法基本介绍适用场景计数器算法滑动窗口算法令牌桶算法漏桶算法综合比较 示例实现 限流算法 限流算法是在系统设计中常用来控制资源访问速率、防止服务过载的技术手段。 基本介绍 主要的限流算法有以下几种&#xff1a; 计数器算法 计数器算法是最简单的限流…

Python语言参考手册 1. 概论

Python语言的精确描述 本专栏致力于提供Python语言的精确描述&#xff0c;包括其语法&#xff08;Syntax&#xff09;、语义&#xff08;Semantics&#xff09;和标准库的详细信息。语法是指编程语言中代码的结构规则&#xff0c;而语义则是指代码的含义&#xff0c;涉及代码如…

解决html2canvas生成图片慢的问题

// 主要看那个点击事件就行 <divclass"textBox-right-board-group"v-for"item in screenList":key"item.id"><!-- 获取不同分辨率下的屏幕的展示的文字大小DPI&#xff1a; fontSize: getFontSize(item.resolutionRatio), --><di…

windows安装 nvm,实现nodejs多版本切换

下载链接&#xff1a;https://github.com/coreybutler/nvm-windows/releases 安装node指定版本 nvm install 版本号 列出所有node版本 nvm ls 切换node版本 nvm use 版本号

AI智能化逐渐趋于成熟后,预测今后最吃香的开发职业

AI智能化正在成熟的路途中&#xff0c;这中间会有波折&#xff0c;但终有一天会来的&#xff0c;我相信等到了这一天&#xff0c;我们的开发效率和代码质量&#xff0c;将会大大不同&#xff0c;而我们的团队与个人&#xff0c;也会面临着很棒的体验。 那么在AI智能化真正趋于成…

前端开发攻略---使用Sass调整颜色亮度,实现Element组件库同款按钮

目录 1、演示 2、实现原理 3、实现代码 1、演示 2、实现原理 改变颜色亮度的原理是通过调整颜色的 RGB 值中的亮度部分来实现的。在 Sass 中&#xff0c;可以使用颜色函数来操作颜色的 RGB 值&#xff0c;从而实现亮度的调整。 具体来说&#xff0c;亮度调整函数通常会改变颜…

武汉星起航:展望跨境电商新篇章,创新发展助力品牌国际化

随着全球经济一体化的深入发展&#xff0c;跨境电商行业正迎来前所未有的发展机遇。在这个充满机遇的时代&#xff0c;武汉星起航电子商务有限公司以其独特的自营亚马逊跨境电商模式和卖家孵化服务&#xff0c;成为了行业内的一股强劲力量。展望未来&#xff0c;武汉星起航将继…

VLM与基础分割模型的联合使用

最近做的项目里有涉及大模型&#xff0c;里面有一部分的功能是&#xff1a; 将图片输入VLM(视觉语言模型&#xff0c;我使用的是llava)&#xff0c;询问图中最显著的物体&#xff0c;将其给出的答案作为基础分割模型&#xff08;我使用的是Grounded-SAM&#xff09;的text prom…