备份比赛数据【算法赛】

0备份比赛数据【算法赛】 - 蓝桥云课

问题描述

蓝桥杯大赛的组委会最近遇到了一个棘手的问题。他们有 N 台电脑需要备份比赛数据,每台电脑所需的备份时间分别为 A1​,A2​,…,AN​ 分钟。

备份必须按编号顺序依次进行,即先第 1 台,再第 2 台,依此类推。每台电脑的备份需要工作人员持续操作,且必须安排在同一天内完成。例如,如果某台电脑的备份需要 5 分钟,那这 5 分钟必须安排在同一天,不能拆分到两天。如果当天剩余时间不足以完成某台电脑的备份,那就只能推迟到第二天进行。

每台电脑备份完成后,系统需要等待 B1​ 分钟才能开始下一台的备份。这段等待时间不需要工作人员操作,且可以跨天进行。例如,如果第 1 台电脑的备份只需在第 2 天开始后等待 10 分钟就能进行。

现在,组委会希望尽量缩短每天的工作时间,以便工作人员尽早下班休息。但上级有要求,所有电脑的备份必须在最多 T 天内完成。对此,请你帮助蓝桥杯组委会计算出每天最少需要安排的工作时间 M(M 最大不可超过 3600),以便所有电脑的备份能在 T 天内顺利完成。如果无论如何都无法满足条件,请直接输出 -1。

输入格式

第一行包含两个整数 N 和 T(1≤N,T≤105),分别表示电脑的数量和最多允许的天数。

第二行包含 N 个整数 A1​,A2​,…,AN​,表示每台电脑的备份时间。

第三行包含 N 个整数 B1​,B2​,…,BN​(1≤Bi​≤3600),表示每台电脑备份完成后需要等待的时间。

输出格式

输出一个不超过 3600 的整数 M,表示每天最少需要安排的工作时间,以确保所有电脑的备份任务能在 T 天内完成。若无法满足条件,则输出 -1。

样例输入

3 2
1 2 3
2 2 2

样例输出

5

样例说明

每天工作时间为5分钟时,备份任务将按以下方式进行:

  • 第1天:​

    • 第1台电脑的备份需要1分钟(第0~1分钟)。
    • 等待 B1​=2 分钟(第1~3分钟)。
    • 第2台电脑的备份需要2分钟(第3~5分钟)。
  • 第2天:​

    • 等待 B2​=2 分钟(第0~2分钟)。
    • 第3台电脑的备份需要3分钟(第2~5分钟)。

所有备份任务可在2天内完成。

思路:

代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 1e5 + 5; // 最大电脑数量+5的缓冲int N, T; // 电脑数量和允许的最大天数
int a[MAXN], b[MAXN]; // a存储备份时间,b存储等待时间/*** 检查给定每日工作时间M是否满足T天完成所有备份的条件* @param M 候选的每日工作时间* @return 是否满足条件*/
bool check(ll M) 
{// 预检查:如果有任意备份时间超过M直接不可行for (int i = 1; i <= N; ++i) {if (a[i] > M) // 备份时间超过单日容量{return false;}}ll prev_end = 0; // 上一个备份的结束时间(绝对时间)ll prev_B = 0;   // 上一个备份后的等待时间(初始为0)ll max_day = 0;  // 记录过程中的最大天数// 遍历所有电脑进行备份模拟for (int i = 1; i <= N; ++i) {// 计算当前备份的开始时间 = 前一个结束时间 + 前一个的等待时间ll s_i = prev_end + prev_B; // 计算所在天数:总时间除以每日时长向下取整ll d_i = s_i / M;           // 计算当前天的结束时间:下一天开始前的时间点ll day_end = (d_i + 1) * M; ll current_day; // 当前备份实际所在天数ll end_i;       // 当前备份的结束时间// 判断能否在当天完成if (s_i + a[i] <= day_end) {// 当天可完成:结束时间直接累加end_i = s_i + a[i];current_day = d_i;} else {// 需要跨天:天数+1,结束时间在下一天的开始时刻+备份时间current_day = d_i + 1;end_i = current_day * M + a[i];}// 更新最大天数(注意天数从0开始计数)if (current_day > max_day){max_day = current_day;}// 保存当前备份的结束时间和产生的等待时间prev_end = end_i;prev_B = b[i]; // 记录当前备份后的等待时间(给下一个备份用)}// 最终天数计算:max_day是最后一个备份所在天数,实际需要+1天(天数从0计数)// 例如:max_day=0 表示第1天完成return (max_day + 1) <= T; 
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr); // 加速输入输出// 读取输入cin >> N >> T;for (int i = 1; i <= N; ++i) {cin >> a[i];}for (int i = 1; i <= N; ++i) {cin >> b[i];}// 二分查找初始化(左开右闭区间)ll left = 0;      // 不可行下界ll right = 3601;  // 可行上界(包含3600)ll ans = -1;      // 最终结果// 特殊二分模板:寻找第一个可行的Mwhile (left + 1 != right) {ll mid = (left + right) / 2;if (check(mid)) {// 当前mid可行,尝试寻找更小的解right = mid; // 移动右边界} else {// 当前mid不可行,需要增大left = mid; // 移动左边界}}// 结果处理(注意边界)if (right <= 3600) {cout << right << endl;} else {cout << -1 << endl; // 无解或超出限制}return 0;
}

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

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

相关文章

2021年蓝桥杯第十二届CC++大学B组真题及代码

目录 1A&#xff1a;空间&#xff08;填空5分_单位转换&#xff09; 2B&#xff1a;卡片&#xff08;填空5分_模拟&#xff09; 3C&#xff1a;直线&#xff08;填空10分_数学排序&#xff09; 4D&#xff1a;货物摆放&#xff08;填空10分_质因数&#xff09; 5E&#xf…

PicGo安装与配置-Gitee图床

1、 前言 平时使用Typora写文章,上传文章到第三方平台上去都要把图片一个一个上传上去,于是我就百度了有没有什么方法可以省略这一步骤,我发现Typora可以用PicGo+Gitee图床方式,这个挺容易的,我把安装的过程在此记录下来。 PicGo是一个用于快速上传图片并获取图片 URL 链…

html css js网页制作成品——HTML+CSS+js迪奥口红网站网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…

重学Java基础篇—如何优雅的删除HashMap元素

在Java中优雅地删除HashMap元素需要注意遍历时的安全性和代码的简洁性。 以下是几种推荐的方法&#xff1a; 1. 使用迭代器遍历并删除&#xff08;传统方式&#xff09; 在遍历时通过迭代器的remove() 方法删除元素&#xff0c;避免ConcurrentModificationException异常。 H…

26考研——图_图的遍历(6)

408答疑 文章目录 三、图的遍历图的遍历概述图的遍历算法的重要性图的遍历与树的遍历的区别图的遍历过程中的注意事项避免重复访问遍历算法的分类遍历结果的不唯一性 广度优先搜索广度优先搜索&#xff08;BFS&#xff09;概述BFS 的特点广度优先遍历的过程示例图遍历过程 BFS …

2025-03-24 学习记录--C/C++-PTA 习题7-6 统计大写辅音字母

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 习题7-6 统计大写辅音字母 英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序&#xff0c;统计给…

在vitepress中使用vue组建,然后引入到markdown

在 VitePress 中&#xff0c;每个 Markdown 文件都被编译成 HTML&#xff0c;而且将其作为 Vue 单文件组件处理。这意味着可以在 Markdown 中使用任何 Vue 功能&#xff0c;包括动态模板、使用 Vue 组件或通过添加 <script> 标签为页面的 Vue 组件添加逻辑。 值得注意的…

常见中间件漏洞之一 ----【Tomcat】

中间件Tomcat介绍&#xff1a; tomcat是⼀个开源⽽且免费的jsp服务器&#xff0c;默认端⼝ : 8080&#xff0c;属于轻量级应⽤服务器。它可以实现 JavaWeb程序的装载&#xff0c;是配置JSP&#xff08;Java Server Page&#xff09;和JAVA系统必备的⼀款环境。 在历史上也披露…

Spring Cloud之负载均衡之LoadBalance

目录 负载均衡 问题 步骤 现象 什么是负载均衡&#xff1f; 负载均衡的一些实现 服务端负载均衡 客户端负载均衡 使用Spring Cloud LoadBalance实现负载均衡 负载均衡策略 ​编辑 ​编辑LoadBalancer原理 服务部署 准备环境和数据 服务构建打包 启动服务 上传J…

量化研究--小果聚宽交易系统上线高速服务器,提供源代码

文章链接量化研究--小果聚宽交易系统上线高速服务器&#xff0c;提供源代码https://mp.weixin.qq.com/s/HecSeAvmaCyVCsPhvxA0xg 今天大家反应以前的服务器比较慢&#xff0c;与200多人在使用这个系统&#xff0c;反应比较慢&#xff0c;实时数据请求服务器&#xff0c;服务器还…

蓝桥杯python组备考2(b站课程笔记)超详细

语法进阶 一、列表推导式 想讲解一下示例4到示例7的代码&#xff1a; 4、循环n次生成n个零放进列表中&#xff0c;其实也就是相当于[0]*n&#xff08;列表乘法&#xff0c;将原来的列表循环n次产生一个新的列表&#xff09;&#xff0c;接着在循环n次产生n个这样的列表&#x…

【大模型LLM第十四篇】Agent学习之anthropic-quickstarts Agent

前言 对于anthropic api的快速使用&#xff0c;在github上有几个example Customer Support Agent&#xff1a;由 Claude 提供支持的客户支持代理。该项目演示了如何利用 Claude 的自然语言理解和生成功能来创建可访问知识库的 AI 辅助客户支持系统。Financial Data Analyst &…

用DrissionPage升级网易云音乐爬虫:更稳定高效地获取歌单音乐(附原码)

一、传统爬虫的痛点分析 原代码使用requests re的方案存在以下局限性&#xff1a; 动态内容缺失&#xff1a;无法获取JavaScript渲染后的页面内容 维护成本高&#xff1a;网页结构变化需频繁调整正则表达式 反爬易触发&#xff1a;简单请求头伪造容易被识别 资源消耗大&am…

2025年渗透测试面试题总结- PingCAP安全工程师(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 PingCAP安全工程师 一、SQL注入判断数据库类型技术分析 1. 常规判断方法 2. 盲注场景下的判断 3. 补…

【加密社】如何创建自己的币圈工具站

需要准备的工作 1.域名 2.服务器 周末的时候主要弄了快讯这方面的代码 我这里用的是星球日报的api&#xff0c;也可以订阅他们的rss&#xff0c;这部分在github上是开源的 https://github.com/ODAILY 我这里用的是WordPressonenav主题&#xff0c;然后用小工具在主页展示&am…

Oracle归档配置及检查

配置归档位置到 USE_DB_RECOVERY_FILE_DEST&#xff0c;并设置存储大小 startup mount; !mkdir /db/archivelog ALTER SYSTEM SET db_recovery_file_dest_size100G SCOPEBOTH; ALTER SYSTEM SET db_recovery_file_dest/db/archivelog SCOPEBOTH; ALTER SYSTEM SET log_archive…

Apache Hive:基于Hadoop的分布式数据仓库

Apache Hive 是一个基于 Apache Hadoop 构建的开源分布式数据仓库系统&#xff0c;支持使用 SQL 执行 PB 级大规模数据分析与查询。 主要功能 Apache Hive 提供的主要功能如下。 HiveServer2 HiveServer2 服务用于支持接收客户端连接和查询请求。 HiveServer2 支持多客户端…

FPGA_DDS_IP核

接下来对FPGA的DDS的ip核进行学习。 首先对DDS需要有些了解 DDS信号发生器采用直接数字频率合成&#xff08;Direct Digital Synthesis&#xff0c;简称DDS&#xff09;技术&#xff0c;简单来说就是 需要一个系统频率和一个输入的数字数据 &#xff0c;用这个系统频率计算出…

欢迎来到未来:探索 Dify 开源大语言模型应用开发平台

欢迎来到未来&#xff1a;探索 Dify 开源大语言模型应用开发平台 如果你对 AI 世界有所耳闻&#xff0c;那么你一定听说过大语言模型&#xff08;LLM&#xff09;。这些智能巨兽能够生成文本、回答问题、甚至编写代码&#xff01;但是&#xff0c;如何将它们变成真正的实用工具…

计算机工具基础(七)——Git

Git 本系列博客为《Missing in CS Class(2020)》课程笔记 Git是一种分布式版本控制系统&#xff0c;被其跟踪的文件可被查询精细到行的修改记录、回退版本、建立分支等 模型 一般流程&#xff1a;工作区 → \to →暂存区 → \to →仓库(本地 → \to →远端) 工作区&#xff1…