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

【CSP】202303-2_垦田计划Python实现

文章目录

    • @[toc]
      • 试题编号
      • 试题名称
      • 时间限制
      • 内存限制
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入1
      • 样例输出1
      • 样例解释
      • 样例输入2
      • 样例输出2
      • 样例解释
      • 子任务
      • `Python`实现

试题编号

202303-2

试题名称

垦田计划

时间限制

1.0s

内存限制

512.0MB

问题描述

  • 顿顿总共选中了 n n n块区域准备开垦田地,由于各块区域大小不一,开垦所需时间也不尽相同。据估算,其中第 i i i ( 1 ≤ i ≤ n ) (1 \leq i \leq n) (1in)区域的开垦耗时为 t i t_{i} ti天,这 n n n块区域可以同时开垦,所以总耗时 t T o t a l t_{Total} tTotal取决于耗时最长的区域,即:

t T o t a l = max ⁡ { t 1 , t 2 , ⋯ , t n } t_{Total} = \max\set{t_{1} , t_{2} , \cdots , t_{n}} tTotal=max{t1,t2,,tn}

  • 为了加快开垦进度,顿顿准备在部分区域投入额外资源来缩短开垦时间,具体来说:
    • 在第 i i i块区域每投入 c i c_{i} ci单位资源,便可将其开垦耗时缩短 1 1 1
    • 耗时缩短天数以整数记,即第 i i i块区域投入资源数量必须是 c i c_{i} ci的整数倍
    • 在第 i i i块区域最多可投入 c i × ( t i − k ) c_{i} \times (t_{i} - k) ci×(tik)单位资源,将其开垦耗时缩短为 k k k
    • 这里的 k k k表示开垦一块区域的最少天数,满足 0 < k ≤ min ⁡ { t 1 , t 2 , ⋯ , t n } 0 < k \leq \min\set{t_{1} , t_{2} , \cdots ,t_{n}} 0<kmin{t1,t2,,tn};换言之,如果无限制地投入资源,所有区域都可以用 k k k天完成开垦
  • 现在顿顿手中共有 m m m单位资源可供使用,试计算开垦 n n n块区域最少需要多少天

输入格式

  • 从标准输入读入数据
  • 输入共 n + 1 n + 1 n+1
  • 输入的第一行包含空格分隔的三个正整数 n n n m m m k k k,分别表示待开垦的区域总数、顿顿手上的资源数量和每块区域的最少开垦天数
  • 接下来 n n n行,每行包含空格分隔的两个正整数 t i t_{i} ti c i c_{i} ci,分别表示第 i i i块区域开垦耗时和将耗时缩短 1 1 1天所需资源数量

输出格式

  • 输出到标准输出
  • 输出一个整数,表示开垦 n n n块区域的最少耗时

样例输入1

4 9 2
6 1
5 1
6 2
7 1

样例输出1

5

样例解释

  • 如下表所示,投入 5 5 5单位资源即可将总耗时缩短至 5 5 5天,此时顿顿手中还剩余 4 4 4单位资源,但无论如何安排,也无法使总耗时进一步缩短
i i i基础耗时 t i t_{i} ti缩减 1 1 1天所需资源 c i c_{i} ci投入资源数量实际耗时
1 1 1 6 6 6 1 1 1 1 1 1 5 5 5
2 2 2 5 5 5 1 1 1 0 0 0 5 5 5
3 3 3 6 6 6 2 2 2 2 2 2 5 5 5
4 4 4 7 7 7 1 1 1 2 2 2 5 5 5

样例输入2

4 30 2
6 1
5 1
6 2
7 1

样例输出2

2

样例解释

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

子任务

  • 70 % 70\% 70%的测试数据满足: 0 < n 0 < n 0<n t i t_{i} ti c i ≤ 100 c_{i} \leq 100 ci100 0 < m ≤ 1 0 6 0 < m \leq 10^{6} 0<m106
  • 全部的测试数据满足: 0 < n 0 < n 0<n t i t_{i} ti c i ≤ 1 0 5 c_{i} \leq 10^{5} ci105 0 < m ≤ 1 0 9 0 < m \leq 10^{9} 0<m109

Python实现

n, m, k = map(int, input().split())days = []
for _ in range(n):days.append(list(map(int, input().split())))def judge(x):sum = 0for i in range(n):if days[i][0] < x:continuesum += (days[i][0] - x) * days[i][1]if sum <= m:return Trueelse:return Falsel, r = k, max(days, key=lambda x: x[0])[0]while l <= r:mid = (l + r) // 2if judge(mid):r = mid - 1else:l = mid + 1print(l)

相关文章:

  • 图论——最小生成树
  • 黑马头条数据管理平台项目总结
  • Gateway:微服务架构中的关键组件
  • IntelliJ idea卡顿解决,我遇到的比较管用的方案
  • MindOpt APL:一款适合优化问题数学建模的编程语言
  • 集简云 x 零售企业丨快速集成有赞商城和微盛企微管家,实现私域运营自动化
  • Vue2学习(组件的使用)
  • 如何选择合适的运筹优化求解器?
  • JPA对数据库修改注意点
  • 界面控件DevExpress中文教程 - 如何用Office File API组件填充PDF表单
  • chrome安装jsonview
  • 等待和通知
  • 智能优化算法应用:基于广义正态分布算法无线传感器网络(WSN)覆盖优化 - 附代码
  • Qt开发学习笔记01
  • Python与ArcGIS系列(十六)重复节点检测
  • Google 是如何开发 Web 框架的
  • android 一些 utils
  • Android开源项目规范总结
  • CentOS7简单部署NFS
  • CODING 缺陷管理功能正式开始公测
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • leetcode讲解--894. All Possible Full Binary Trees
  • select2 取值 遍历 设置默认值
  • SpringBoot 实战 (三) | 配置文件详解
  • SpriteKit 技巧之添加背景图片
  • vue-router 实现分析
  • 复杂数据处理
  • 和 || 运算
  • 后端_MYSQL
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 普通函数和构造函数的区别
  • 前端设计模式
  • 携程小程序初体验
  • ​用户画像从0到100的构建思路
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # Apache SeaTunnel 究竟是什么?
  • #include到底该写在哪
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (C#)一个最简单的链表类
  • (vue)页面文件上传获取:action地址
  • (接口封装)
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转载)(官方)UE4--图像编程----着色器开发
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .net MySql
  • .net web项目 调用webService
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET 指南:抽象化实现的基类
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • @SpringBootApplication 包含的三个注解及其含义