D. Sharky Surfing (python解)-codeforces

news/2024/11/19 8:10:49/文章来源:https://www.cnblogs.com/666-777-eto/p/18554118

D. Sharky Surfing (python解)-codeforces

原题链接:

点击传送

问题分析:

开始于位置 1,目标是到达位置 L。她的跳跃能力初始为 1,可以在当前位置 x 跳到区间 [x,x+k] 内的任意整数位置。路径上有 n 个障碍(以区间 [li,ri] 表示),她 不能在这些区间内跳跃。同时,路径上还有 m 个能量提升(在特定位置 xi 处),可以增加她的跳跃能力。

思路:

  • 使用一个循环来合并相邻的障碍区间。通过检查当前障碍的右边界 r[x*] 和下一个障碍的左边界 l[i] 是否相邻,如果相邻则更新右边界,否则将当前障碍添加到合并后的列表中。
  • 使用一个最大堆(优先队列)来存储能量提升的值,以便在需要时能够快速
  • 模拟跳跃
    • 对于每个障碍,检查 她 是否能够跳过它。如果不能跳过,则从堆中收集能量提升,直到她的跳跃能力足以跳过障碍。
    • 如果在处理完所有障碍后,她 仍然无法跳过某个障碍,则输出 -1。

代码:

import heapq  def solve():  n, m, L = map(int, input().split())  l = [0] * (n + 1) r = [0] * (n + 1) mp = []  # 存储能量提升的位置和价值  for i in range(1, n + 1):  l[i], r[i] = map(int, input().split())  for i in range(1, m + 1):  x, v = map(int, input().split())  mp.append((x, v))  mp.sort()  # 合并障碍  x = 1  for i in range(2, n + 1):  if r[x] + 1 == l[i]:  # 如果当前障碍和下一个障碍相邻  r[x] = r[i]  # 更新右边界  else:  x += 1  l[x] = l[i]  r[x] = r[i]  cnt = 0  ans = 0  sum_val = 1  # 当前跳跃能力  q = []  # 最大堆,用于存储能量提升的值  for i in range(1, x + 1):  # 收集所有在当前障碍左边的能量提升  while cnt < m and mp[cnt][0] < l[i]:  heapq.heappush(q, -mp[cnt][1])  # 将能量提升的值存入堆中(取负值以实现最大堆)  cnt += 1  xx = r[i] - l[i] + 1  # 尝试使用能量提升来跳过障碍  while q and sum_val <= xx:  ans += 1  # 收集一个能量提升  sum_val += -heapq.heappop(q)  # 增加跳跃能力  # 如果跳跃能力仍然不足以跳过障碍  if sum_val <= xx:  print("-1")  return  print(ans) 
if __name__ == "__main__":  T = int(input())  for _ in range(T):  solve()

祝AC

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

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

相关文章

读数据质量管理:数据可靠性与数据质量问题解决之道08扩展异常检测

扩展异常检测1. Python和机器学习扩展异常检测 1.1. 机器学习有助于大规模数据可观测性和数据监控1.1.1. 配备了机器学习的检测器可以更灵活地应用到更多的数据表上,从而消除了随着数据仓库或数据湖的增长进行手动检查和手动操作的需要1.1.2. 机器学习检测器可以实时学习和适应…

笼统的数据处理

通常来说,根据数据类型可以将编程语言分为两类:强类型语言强类型语言(Strongly typed language)不仅强制要求事先声明变量,还要求声明每个变量的数据类型,这样编译器就能准确地知道这个变量中的值的类型。强类型语言在数据类型上要求很严格:必须事先说明变量中存放的数据…

GitLab私有仓库概述及环境部署

作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 目录一.gitlab概述1.gitlab介绍2.gitlab架构3.gitlab推荐配置二.部署gitlab前准备1.ubuntu系统环境安装前准备1.1 配置Ubuntu主机名1.2 配置Ubuntu远程链接1.3 配置ubuntu仓库1.4 修改终端颜色1.5 重启虚拟机…

RHEL8.10上搭建dhcp-relay服务

日期:2024.11.17 目的:在rhel8上搭建dhcp-relay服务,让搭建在lan网段(10.31.0.0/24)中的DHCP服务器rocky9(10.31.0.1/24),可以给dmz网段(172.31.0.0/24)中的主机提供服务 参照:鸟哥Linux私房菜 https://linux.vbird.org/linux_server/rocky9/0220dhcp_ntp.php#9.3 3…

ROCKY9.4上搭建DHCP服务

日期:2024.11.14 内容:在虚拟的LAN网络中(10.31.0.0/24)的ROCKY9.4(10.31.0.1/24)上搭建DHCP服务器,供LAN网络中其余主机自动获取IP地址 参照:鸟哥Linux私房菜 马哥教育王晓春老师课程安装DHCP服务 [root@ROCKY9 ~]# dnf info dhcp-server Last metadata expiration check:…

dyld: 神秘的 __dso_handle

dyld: 神秘的 __dso_handleiOS动态链接器dyld中有一个神秘的变量__dso_handle: // dyld/dyldMain.cpp static const MachOAnalyzer* getDyldMH() { #if __LP64__// 声明 __dso_handleextern const MachOAnalyzer __dso_handle;return &__dso_handle; #else... #endif // __…

攻防世界-转轮机加密

解法1:参考:https://blog.csdn.net/weixin_45556441/article/details/110851390解法2:book = ["NACZDTRXMJQOYHGVSFUWIKPBEL","FHTEQGYXPLOCKBDMAIZVRNSJUW","QGWTHSPYBXIZULVKMRAFDCEONJ","KCPMNZQWXYIHFRLABEUOTSGJVD","SXCD…

攻防世界-栅栏密码

原理加密分为经典型和W型题目解题 W型解密(多数默认)链接: https://www.a.tools/Tool.php?Id=264 https://ctf.bugku.com/tool/railfence

攻防世界-safer_than_rot13(替代密码)

题目解题解密链接:http://quipqiup.com/ 参考:https://blog.csdn.net/xiao__1bai/article/details/121692829