第29次CCF计算机软件能力认证-2-垦田计划

article/2025/7/5 6:31:37

垦田计划

刷新 

时间限制: 1.0 秒

空间限制: 512 MiB

下载题目目录(样例文件)

题目描述

顿顿总共选中了 nn 块区域准备开垦田地,由于各块区域大小不一,开垦所需时间也不尽相同。据估算,其中第 ii 块(1≤i≤n1≤i≤n)区域的开垦耗时为 titi​ 天。这 nn 块区域可以同时开垦,所以总耗时 tTotaltTotal​ 取决于耗时最长的区域,即:tTotal=max⁡{t1,t2,⋯,tn}tTotal​=max{t1​,t2​,⋯,tn​}

为了加快开垦进度,顿顿准备在部分区域投入额外资源来缩短开垦时间。具体来说:

  • 在第 ii 块区域投入 cici​ 单位资源,便可将其开垦耗时缩短 11 天;

  • 耗时缩短天数以整数记,即第 ii 块区域投入资源数量必须是 cici​ 的整数倍;

  • 在第 ii 块区域最多可投入 ci×(ti−k)ci​×(ti​−k) 单位资源,将其开垦耗时缩短为 kk 天;

  • 这里的 kk 表示开垦一块区域的最少天数,满足 0<k≤min⁡{t1,t2,⋯,tn}0<k≤min{t1​,t2​,⋯,tn​};换言之,如果无限制地投入资源,所有区域都可以用 kk 天完成开垦。

现在顿顿手中共有 mm 单位资源可供使用,试计算开垦 nn 块区域最少需要多少天?

输入格式

从标准输入读入数据。

输入共 n+1n+1 行。

输入的第一行包含空格分隔的三个正整数 nn、mm 和 kk,分别表示待开垦的区域总数、顿顿手上的资源数量和每块区域的最少开垦天数。

接下来 nn 行,每行包含空格分隔的两个正整数 titi​ 和 cici​,分别表示第 ii 块区域开垦耗时和将耗时缩短 11 天所需资源数量。

输出格式

输出到标准输出。

输出一个整数,表示开垦 nn 块区域的最少耗时。

样例1输入

4 9 2
6 1
5 1
6 2
7 1

样例1输出

5

样例1解释

如下表所示,投入 55 单位资源即可将总耗时缩短至 55 天。此时顿顿手中还剩余 44 单位资源,但无论如何安排,也无法使总耗时进一步缩短。

ii基础耗时 titi​缩减 11 天所需资源 cici​投入资源数量实际耗时
16115
250
3622
471

样例2输入

4 30 2
6 1
5 1
6 2
7 1

样例2输出

2

样例2解释

投入 2020 单位资源,恰好可将所有区域开垦耗时均缩短为 k=2k=2 天;受限于 kk,剩余的 1010 单位资源无法使耗时进一步缩短。

子任务

70%70% 的测试数据满足:0<n,ti,ci≤1000<n,ti​,ci​≤100 且 0<m≤1e6 0<m≤1e6;

全部的测试数据满足:0<n,ti,ci≤1e5 0<n,ti​,ci​≤1e5 且 0<m≤1e9 0<m≤1e9。

70分代码,拿了就走

用最大的天数dmax作为循环变量,每次循环开始时-1

计算n块田地总天数-1需要的资源 

判断m和资源的大小

如果m>tmp,则m=m-tmp

否则说明-1行不通了,最少的天数就是dmax+1

这里还用了一个小优化,就是当天数来到dmin的时候,再想-1的话就是每块田都要-1,直接判断每块田-1所需要的资源数和与m的大小,虽然用处不大

#include <iostream>
using namespace std;
int ti[100010], ci[100010];int main()
{int n, m, k;cin >> n >> m >> k;int dmax = 0;int dmin = 0;int dec_sum = 0;for (int i = 1; i <= n; i++){cin >> ti[i] >> ci[i];dmax = max(dmax, ti[i]);dmin = min(dmin, ti[i]);dec_sum += ci[i];}while (dmax > k){int tmp = 0;dmax--;if (dmax > dmin){for (int i = 1; i <= n; i++){if (ti[i] > dmax)tmp += ci[i];}}else{tmp = dec_sum;}if (tmp <= m){m -= tmp;}else{dmax++;break;}}cout << dmax << endl;
}

100分代码 追求极致

 前面循环是dmax每次-1

这里我们想到让dmax每次-100,因为-10还是超时

关键的地方就是如何计算-100的情况下每块田所需的资源

假如有三块田 ,所需天数分别为550 , 500 , 450

那么dmax=550,,先-100之后dmax=450 > dmin(=100)

遍历田地数组

第一块田450 = dmax,跳过

第二块田500 > dmax,

t1[i] > dmax

ti[i]天数降低到dmax所需的资源就是 ci[i] * (ti[i] - dmax)

第三块田550>dmax

t2[i] 减到多少天合适呢

dmax = 450 , ti[2] = 550

减到和dmax一样大需要的资源:ci[i] * (ti[i] - dmax)

用ai[i] 数组保存下每块田减少的天数,用于后面的精细查询还原ti[i]数组的状态

精细查询就和上面的一样,dmax每次-1,直到找到正确答案即可

#include <iostream>
using namespace std;
int ti[100010], ci[100010], ai[100010];
/*
4 30 2
6 1
5 1
6 2
7 12
*/int main()
{int n, m, k;cin >> n >> m >> k;int dmax = 0, dmin = 0, dec_sum = 0;for (int i = 1; i <= n; i++){cin >> ti[i] >> ci[i];dmax = max(dmax, ti[i]);dmin = min(dmin, ti[i]);dec_sum += ci[i];}while (dmax > k){int tmp = 0;dmax -= 100;if (dmax > dmin){for (int i = 1; i <= n; i++){if (ti[i] > dmax){ai[i] = ti[i] - dmax;tmp += ci[i] * ai[i];ti[i] -= ai[i];}}}elsetmp = dec_sum * 100;if (tmp <= m)m -= tmp;else{dmax += 100;int num = 100;for (int i = 1; i <= n; i++){ti[i] += ai[i];}while (dmax > k && num--){int tmp0 = 0;dmax--;if (dmax > dmin){for (int i = 1; i <= n; i++){if (ti[i] > dmax)tmp0 += ci[i];}}else{tmp0 = dec_sum;}if (tmp0 <= m){m -= tmp0;}else{dmax++;break;}}break;}}cout << dmax << endl;
}


http://www.hkcw.cn/article/tqZqFjijOh.shtml

相关文章

权限分配不合理如何影响企业运营?

“我们明明只给了她CRM的查看权限&#xff0c;怎么客户数据被删了&#xff1f;” “新员工入职三天了&#xff0c;HR系统权限还没开通&#xff0c;流程完全卡住&#xff01;” “上个月刚给项目经理配了财务权限&#xff0c;怎么又出乱子了&#xff1f;” 这些对话是否在你的…

2025.05.30【转录组】|Ribo-seq数据流程详解(一 质量控制)

Ribo-seq数据流程详解(一 质量控制) 作者:穆易青 文章目录 Ribo-seq数据流程详解(一 质量控制)1. 前言2. 原始数据质控3. 参数详解4. 总结1. 前言 Ribo-seq(核糖体测序)主要研究转录后调控和翻译动态。高质量的Ribo-seq数据是可靠生物学结论的基础。本文介绍了Ribo-se…

指纹识别+精准化POC攻击

开发目的 解决漏洞扫描器的痛点 第一就是扫描量太大&#xff0c;对一个站点扫描了大量的无用 POC&#xff0c;浪费时间 指纹识别后还需要根据对应的指纹去进行 payload 扫描&#xff0c;非常的麻烦 开发思路 我们的思路分为大体分为指纹POC扫描 所以思路大概从这几个方面…

pikachu通关教程-目录遍历漏洞(../../)

目录遍历漏洞也可以叫做信息泄露漏洞、非授权文件包含漏洞等. 原理:目录遍历漏洞的原理比较简单&#xff0c;就是程序在实现上没有充分过滤用户输入的../之类的目录跳转符&#xff0c;导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。 这里的目录跳转符可以是../…

医生进校义诊卖仪器?医院回应 假冒医生行骗

近日,市民李先生带父亲参加了一次所谓的义诊活动。该活动由两位自称来自南方医科大学南方医院的医生举办。李先生花费五千多元购买了康复理疗仪器,但发现“货不对板”。经核实,南方医院并未组织过相关义诊,两位医生也查无此人。李先生的父亲是退休教授,在学校退休人员微信…

八N皇后问题

1 问题的提出 在8X8格的国际象棋上摆放八个皇后&#xff0c;使其不能互相攻击&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上&#xff0c;问有多少种摆法 我们的任务就是用MATLAB进行求解 2 数学模型的构建 首先我们分析题目就是 任意两个皇后都不能处于…

CRM 系统核心优势解析:数字化客户管理如何驱动企业增长

企业在客户管理中常面临数据分散、互动低效、决策滞后等挑战&#xff0c;传统管理方式难以满足数字化时代的客户运营需求。CRM&#xff08;客户关系管理&#xff09;系统作为整合客户数据、优化互动流程的核心工具&#xff0c;通过数字化手段重构企业与客户的连接模式。本文系统…

Windows SSDT Hook(一)

前言 虽然在 Windows Vista 以后的 64 位操作系统中&#xff0c;PatchGuard&#xff08;内核补丁保护机制&#xff09;对 SSDT&#xff08;System Service Dispatch Table&#xff0c;系统服务分派表&#xff09;实施了强力保护&#xff0c;直接 Hook SSDT 的方式几乎不可行&a…

centos7.6阿里云镜像各个版本介绍

&#xff08;水一期&#xff09; Index of /centos-vault/centos/7.6.1810/isos/x86_64/ File NameFile SizeDateParent directory/--0_README.txt2.4 KB2018-12-01 21:21CentOS-7-x86_64-DVD-1810.iso4.3 GB2018-11-26 07:55CentOS-7-x86_64-DVD-1810.torrent86.0 KB2018-12-…

在大型 GIS 数据库中按属性高效溶解相邻多边形

您是否拥有一个大型 GIS 数据集&#xff0c;并希望高效地融合所有具有相同属性的相邻多边形&#xff1f;在本文中&#xff0c;我将分享如何使用 PostGIS 处理包含超过 75 万行数据的土地利用数据集来实现这一目标。 我将以维多利亚州土地利用数据集为例。该数据可从Data VIC免…

Spring Web高保真Axure动态交互元件库

在当今快速发展的Web设计与开发领域&#xff0c;设计师和开发者们一直在寻找高效、高质量的工具来加速原型设计过程。今天&#xff0c;我要向大家介绍一款专为Web设计与开发领域量身打造的Axure交互元件集合——Spring UI Web端高保真动态交互元件库。这款元件库不仅全面且易于…

Chrome插件学习笔记(二)

Chrome插件学习笔记&#xff08;二&#xff09; 参考文章&#xff1a; https://developer.chrome.com/docs/extensions/reference/api/sidePanel?hlzh-cnhttps://developer.chrome.com/docs/extensions/reference/api/webRequest?hlzh-cnhttps://developer.chrome.com/docs/e…

判断质数的基础方法

判断一个数是否为质数&#xff1a;基础方法(运算效率较慢) 另一种运用API来提高运算效率&#xff1a; 以下是添加了详细注释的代码版本&#xff0c;并优化了部分逻辑&#xff1a; package test;public class test5 {public static void main(String[] args) {//判断一个数是否…

列表单独展开收起同时关闭其余子项的问题优化

如图所示&#xff0c;当在列表中&#xff0c;需要分别单独点开子选项时&#xff0c;直接这样用一个index参数判断即可&#xff0c;非常简单方便&#xff0c;只需要满足点开当前index,然后想同index用null值自动关闭即可

java25

1.可变参数 2.集合工具类Collections 3.综合练习 集合嵌套&#xff1a; 4.不可变集合 JDK9以后才能用 这个静态方法名是of&#xff0c;返回值是List<E>,是泛型方法。 JDK10以后的简化版&#xff1a; 5.Stream流 爽一下&#xff1a; 简化后的: 注意&#xff1a;stream.ma…

中方:南南合作始终是对外合作优先方向

当地时间5月30日,联合国南南合作基金30周年纪念活动在纽约联合国总部举行。中国常驻联合国代表傅聪在活动致辞中表示,中方高度赞赏基金支持的务实合作成果。中方表示,始终坚定支持联合国发展支柱,始终坚定支持真正的多边主义,始终将南南合作作为对外合作的优先方向。中方指…

在线博客系统【测试报告】

&#x1f552; 一. 项目背景 由于纸质笔记容易丢失&#xff0c;携带不变&#xff0c;为了方便自己学习的过程中记录笔记&#xff0c;特开发了这个博客系统。这个系统后端采用 SpringBoot MyBatis SpringMVC &#xff1b;前端使用Html CSS JS&#xff1b;数据库使用的是Mysq…

近期手上的一个基于Function Grap(类AWS的Lambda)小项目的改造引发的思考

函数式Function是云计算里最近几年流行起来的新的架构和模式&#xff0c;因为它不依赖云主机&#xff0c;非常轻量&#xff0c;按需使用&#xff0c;甚至是免费使用&#xff0c;特别适合哪种数据同步&#xff0c;数据转发&#xff0c;本身不需要保存数据的业务场景&#xff0c;…

C++ - 模板(一) #泛型编程 #函数模板 #类模板

文章目录 前言 一、泛型编程 二、函数模板 1、函数模板的概念 2、函数模板的格式 3、函数模板的原理 4、函数模板的实例化 1、隐式实例化&#xff1a; 2、显式实例化&#xff1a; 5、模板参数的匹配原则 三、类模板 1、类模板的定义格式 2、类模板的实例化 总结 …

智能制造全场景数字化解决方案

制造企业数字化转型面临的挑战 数智化转型已成为中国制造业高质量发展的关键战略。面对全球制造业格局调整&#xff0c;如何快速构建覆盖全业务流程的可视化应用&#xff0c;通过数据驱动的方式为企业经营管理、预警监测、质量管控、决策支持提供全面支撑&#xff0c;是企业面…