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

题解:T480718 eating

eating

题目背景

从前有个荣光的王国,小 A 是里面的国王,今天他要赐予他的子民以仓廪。

题目描述

在一条街上有 n n n 个饭店。小 A 站在这条街的最左端。

i i i 个饭店离这条街最左端的距离是 a i a_i ai,它所售卖的菜品的美味值是 b i b_i bi

小 A 不想走太多路,但是又想吃到好吃的东西。因此他定义一个饭店的吸引力是 w i = b i a i w_i = \frac{b_i}{a_i} wi=aibi

小 A 想知道吸引力最大的饭店的编号是多少。如果有多个吸引力最大的饭店,你要告诉他距离街道左端距离最近的那个饭店的编号。

输入格式

第一行是一个整数 n n n,表示商店的个数。
接下来 n n n 行,每行两个整数,表示一个商店离街道左端的距离 a i a_i ai 个菜品美味值 b i b_i bi

输出格式

输出一行一个整数,表示答案。

样例 #1

样例输入 #1

3
1 2
2 4
3 9

样例输出 #1

3

样例 #2

样例输入 #2

3
1 2
2 3
3 4

样例输出 #2

1

样例 #3

样例输入 #3

3
1 1
2 3
4 6

样例输出 #3

2

提示

数据规模与约定

  • 20 % 20\% 20% 的数据, n = 2 n = 2 n=2
  • 40 % 40\% 40% 的数据,保证 b i b_i bi a i a_i ai 的倍数。
  • 60 % 60\% 60% 的数据,保证给出的 a i a_i ai 单调递增。
  • 80 % 80\% 80% 的数据,保证 n ≤ 1000 n \leq 1000 n1000
  • 100 % 100\% 100% 的数据,保证 2 ≤ n ≤ 1 0 5 2 \leq n \leq 10^5 2n105 1 ≤ a i , b i ≤ 1 0 9 1 \leq a_i, b_i \leq 10^9 1ai,bi109 a i a_i ai 互不相同。

为了解决这个问题,我们可以遍历所有的饭店,计算每个饭店的吸引力 w i = b i a i w_i = \frac{b_i}{a_i} wi=aibi,并记录当前最大的吸引力和对应的饭店编号。如果有多个饭店的吸引力相同且都是最大的,我们还需要记录这些饭店中距离街道左端最近的饭店编号。

以下是具体的Python代码实现:

n = int(input().strip())  # 读取饭店数量
max_attraction = float('-inf')  # 初始化最大吸引力为负无穷
closest_restaurant = 0  # 初始化距离街道左端最近的饭店编号为0(实际上这个初始值不会被使用)
answer = 0  # 初始化答案为0(实际答案会在这个基础上更新)for i in range(n):a_i, b_i = map(int, input().strip().split())  # 读取每个饭店的距离和美味值w_i = b_i / a_i  # 计算吸引力# 如果当前饭店的吸引力大于已知的最大吸引力if w_i > max_attraction:max_attraction = w_i  # 更新最大吸引力answer = i + 1  # 更新答案为当前饭店的编号# 如果当前饭店的吸引力等于已知的最大吸引力,但距离更近elif w_i == max_attraction and a_i < min(a_i for _, a_i in enumerate(range(answer-1, -1, -1))):# 注意这里我们假设answer-1之前的饭店的a_i都已经被读取过了,但实际上我们需要一个额外的数据结构来存储这些值# 但由于题目保证a_i互不相同,我们可以直接更新answer,因为更近的饭店一定在更前面被读取answer = i + 1  # 更新答案为当前饭店的编号print(answer)  # 输出答案

然而,上面的代码在处理距离更近的饭店时存在逻辑上的不严谨,因为我们在遍历过程中并没有存储之前所有饭店的距离。但由于题目保证 a i a_i ai 互不相同,我们可以简化处理:当遇到吸引力相同的饭店时,我们直接更新答案,因为后读取的饭店(即距离更近的)会覆盖之前的答案。

下面是简化后的代码:

n = int(input().strip())
max_attraction = float('-inf')
answer = 0for i in range(n):a_i, b_i = map(int, input().strip().split())w_i = b_i / a_iif w_i > max_attraction or (w_i == max_attraction and i + 1 < answer):max_attraction = w_ianswer = i + 1print(answer)

这样,我们就可以正确地找到吸引力最大且距离街道左端最近的饭店编号了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【思科】链路聚合实验配置和背景
  • 自动化产线 搭配数据采集监控平台 创新与突破
  • mysql 安装配置 next 按钮为什么置灰点击不了
  • 3D 渲染一个房屋需要多长时间?
  • chatglm2-6b-prompt尝试
  • SwiftUI 6.0(Xcode 16)新 PreviewModifier 协议让预览调试如虎添翼
  • 路网双线合并单线——ArcGIS 解决方法
  • 全国区块链职业技能大赛国赛考题区块链产品需求分析与方案设计
  • CSS 计数器:WebKit 的样式增强术
  • Java8-21新特性
  • HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号3
  • modbus slave 设备通过 网关thingsboard-gateway 将数据上传到thingsboard云平台
  • 基于ListBox制作一个好看的侧边菜单导航栏
  • 【Agent】信息提取场景
  • 深入理解Android中的缓存与文件存储目录
  • django开发-定时任务的使用
  • JavaScript新鲜事·第5期
  • Protobuf3语言指南
  • spring cloud gateway 源码解析(4)跨域问题处理
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 基于组件的设计工作流与界面抽象
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 如何在 Tornado 中实现 Middleware
  • ​水经微图Web1.5.0版即将上线
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • $(selector).each()和$.each()的区别
  • (10)STL算法之搜索(二) 二分查找
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (C++20) consteval立即函数
  • (Charles)如何抓取手机http的报文
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (七)glDrawArry绘制
  • (推荐)叮当——中文语音对话机器人
  • (转)编辑寄语:因为爱心,所以美丽
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET开源纪元:穿越封闭的迷雾,拥抱开放的星辰
  • .NET企业级应用架构设计系列之应用服务器
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • .stream().map与.stream().flatMap的使用
  • @antv/x6 利用interacting方法来设置禁止结点移动的方法实现。
  • @JsonSerialize注解的使用
  • @RunWith注解作用
  • [000-002-01].数据库调优相关学习
  • [ajaxupload] - 上传文件同时附件参数值
  • [Android 13]Input系列--获取触摸窗口
  • [Android] Implementation vs API dependency
  • [BZOJ 3680]吊打XXX(模拟退火)
  • [CERC2017]Cumulative Code
  • [C语言]-基础知识点梳理-文件管理
  • [ERROR] 不再支持目标选项 5。请使用 7 或更高版本
  • [Hdp] lc552. 学生出勤记录 II(dp+递推+状态定义+状态转移+向前转移+好题)
  • [JavaWeb学习] Spring Ioc和DI概念思想
  • [JMS 3] ActiveMQ实现简单的helloworld
  • [k8s源码]6.reflector