当前位置: 首页 > news >正文

码蹄杯冲刺!!!

之前忙着期末考试与一些其他的闲杂事情所以就耽搁了更深层的钻研,现在暑假又来补啦!由于今天实在是有些晚了,再加上本人脑容量不是很够,所以这篇文章就写了一道题码蹄集OJ-丫鬟的月例银。

MC0481丫鬟的月例银 难度:黄金

年终结算时,贾母发现各房主子丫鬟的月例银总额太高了。为了削减开支,需要进行调整。现在假设荣国府一共有n个丫鬟,她们的月例银排成正整数序列为a1∼an​。现在削减开支的目标,是要让这n个数字之和不超过m。

为了实现这一目标,小码妹可以钦定一个正整数D,使得所有的ai​变成⌊ai/D⌋,现在问,要实现这一目标,D最小可以是多少(当然不能小于1)?

格式

输入格式:

第一行一个整数T(1≤T≤5×100000),表示测试数据组数,对于每组测试数据:
第一行两个整数n,m(1≤n≤5×100000,1≤m≤1000000000000)。
第二行nn个整数a1∼an(1≤ai≤1000000000)。
数据保证 ∑n≤5×1000000。

输出格式:

对于每组测试数据,一行一个整数,表示答案。

样例 1

输入:

3 5 10 10 10 4 10 6 5 10 1 1 1 1 1 5 10 2 2 3 2 2

复制

输出:

4 1 2

复制

样例 2

输入:

1 1 1 999999999

输出:

500000000

本题相关知识点: 算法基础:二分 | 三分

思考

这个题一开始看到的时候我脑子还有点雾水,但是看到了算法基础是二分我就瞬间明白可以怎么来进行思考了。(虽然但是,希望自己在比赛时也能看出这个找最小值是用二分

要找到可以满足每一个月例银除掉一个最小值后加起来还要小于一个m值的D值,此时我们使用二分就能避免数据过多而导致的超时了。当然,这个二分模板我仍然选择的是自己用的比较熟练的,详细见下方。

int find(int q) { int l = 0, r = 最大值; while(l+1 < r) { int mid = (l+r) >> 1; if(check()) l = mid; else r = mid; } return r; }

然后就是命值了,l我仍然是选择的命值为0,r命值为最大的a[i]1000000009,在这个范围内去找答案,同时写一个加和函数fun,当加和后的结果如果大于给定的m值,那么就将后就将l赋值为mid,反之则将r赋值为mid,最后取的是右边的值,因为找最小的,那么就应该在右边那些不可行的范围中找到那个边界值也就是最小的r,就是我们要求的D值。

代码如下:

#include<bits/stdc++.h> #define N 500005 using namespace std; int n, D; long long a[N], m, sum; long long fun(int x) { long long tmp = 0; for(int i = 1; i <= n; i++) { tmp += a[i]/x; } return tmp; } int main( ) { int T; cin >> T; while(T--) { cin >> n >> m; for(int i = 1; i <= n; i++) { cin >> a[i]; sum += a[i]; } if(sum <= m) { cout << 1 << '\n'; sum = 0; continue; } int l = 0, r = 1000000009; while(l+1 < r) { int mid = (l+r) >> 1; if(fun(mid) > m) l = mid; else r = mid; } D = r; cout << D << '\n'; } return 0; }
http://www.jsqmd.com/news/1229576/

相关文章:

  • 微信账号安全防护:识别危险信号与应急处理
  • 金融风控AI模型突然失效?监管沙盒验证过的4步归因框架,已助17家银行紧急止损
  • 【万字文档+源码】基于SpringBoot+Vue员工岗前培训学习平台-可用于毕设-课程设计-练手学习-学习资料分享
  • c语言学习记录2
  • Suno+DAW协同终极方案:Logic Pro X无缝接入Suno Stem分离流(仅限前200名领取定制Audio Unit插件)
  • 给AI写一份“岗位操作手册”——Skill 编写的完整流程与模板
  • HsMod深度解析:基于BepInEx的炉石传说终极增强方案
  • 把本地 MCP 工具临时暴露给 AI 客户端:用 cpolar 排查 Resource 为什么看不到
  • 终极免费歌词获取神器:3分钟批量下载全网音乐LRC歌词
  • 机器人开始打工了,可量产才是生死线|2026 WAIC
  • 本地终端重启后信号重复:用检查点恢复量化任务状态
  • 3个智能功能:用AI相册重塑你的个人记忆管理
  • 2026南宁名表回收价格行情表|保值率高低与出手时机详解 - 易奢福
  • WinForm 工具箱常用控件使用指南与函数归类总结
  • plpgsql_check 高级功能详解:代码覆盖率、性能分析和追踪器
  • FASTAPI第二天
  • Bochs调试器入门与实战:从编译安装到高级调试技巧
  • 2026辽阳数码家电回收排名 TOP5 回收办公电脑显示器,废旧空调冰柜洗衣机高价回收 手机回收无套路 联系方式推荐 - 诚金汇钻回收公司
  • 【实战】Nacos 配置中心落地全流程:从 0 到 1 搭建企业级服务治理平台(含阿里云 MSE 托管版实践)
  • 2026廊坊数码家电回收排名 TOP5 回收办公电脑显示器,废旧空调冰柜洗衣机高价回收 手机回收无套路 联系方式推荐 - 诚金汇钻回收公司
  • GitHub Copilot SDK舰队模式:并行处理大规模工作流的终极指南 [特殊字符]
  • Anthropic源码泄露事件解析与AI工程安全启示
  • Reddit 上的「间谍软件」指控
  • 【Dify零代码AI应用搭建指南】:20年架构师亲授,3步上线企业级智能助手(附避坑清单)
  • Ubuntu 26.04 LTS前瞻:十年支持周期与关键技术解析
  • React Native Photo Browser 错误处理与调试:常见问题解决方案
  • 暑假运维打卡第二天7.19
  • PSWinReportingV2性能优化:大规模域环境下的日志解析技巧
  • 领探完整使用教程(插件版)|精准挖掘领英客户资料+最全问答指南
  • html