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

跳板问题(贪心算法+细节思考)

首先直接看题:

 这题直接贪心其实问题不大:

下面先展示我的一个错误代码:

# include<iostream>
# include<vector>
# include<algorithm>using namespace std;int main()
{int N,M;cin>>N>>M;vector<vector<int>> arr(N,vector<int>(2));for(int i=0;i<N;i++){cin>>arr[i][0]>>arr[i][1];}// 感觉贪心应该就能解决int distance = 0;int step = 0;int i = 0;// 可能少考虑了一点while(distance<=M){if(distance<=arr[i][0]){step+=arr[i][0]-distance;distance = arr[i][0]+arr[i][1];}else if(distance>arr[i][0]){i++;if(i>=N){step+=M-distance;break;}}}cout<<step<<endl;return 0;
}

其实整体思路是没有问题的,

但题目里面有一个细节,就是说“每个跳板能够将胡同学发射到一定距离内的任意位置。“

这时候问题就来了,比如距离起点为5,能跳长度为6的这样一个板,它在5-11之间还是会有其他的跳板,所以,在5-11他也不需要自行走路,因为他目前的跳板可以把他送到5-11范围内的任意位置,那么如果有这样一个跳板,距离起点7,跳板长度是10,那么借助这个跳板就可以直接达到17这个位置,这是之前代码没有考虑到的,之前的代码直接是认为做上5跳板,到达的位置就是11,这就是问题所在,所以i++的过程中需要进行一个判断。

所以最终代码就是:

# include<iostream>
# include<vector>
# include<algorithm>using namespace std;int main()
{int N,M;cin>>N>>M;vector<vector<int>> arr(N,vector<int>(2));for(int i=0;i<N;i++){cin>>arr[i][0]>>arr[i][1];}// 感觉贪心应该就能解决int distance = 0;int step = 0;int i = 0;// 可能少考虑了一点int current_pos = 0;while(distance<M&&i<N){if(current_pos<=arr[i][0]){step+=arr[i][0]-distance;current_pos = arr[i][0];}distance = arr[i][0]+arr[i][1]; // 前一个跳板能达到的最远距离if(distance>current_pos){current_pos = distance;}i++;}if(current_pos<M){step+=M-current_pos;}cout<<step<<endl;return 0;
}

最主要的点就是一个比较。

http://www.xdnf.cn/news/658495.html

相关文章:

  • 中国工程咨询协会新型基础设施专业委员会成立
  • Open vSwitch笔记20250526
  • 基于python合成100X100的透明背景图片和图标
  • 十大排序算法
  • 单例模式,饿汉式,懒汉式,在java和spring中的体现
  • 从数据页角度理解B+树查询
  • Netty学习专栏(五):Netty高性能揭秘(Reactor模式与零拷贝的深度实践)
  • 华为OD机试真题——单词接龙(首字母接龙)(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 股指期货移仓换月技巧是什么?
  • CUDA编程笔记(1)--最简单的核函数
  • 大模型RL方向面试题90道
  • Filter和Interceptor详解(一文了解执行阶段及其流程)
  • CVE-2024-36467 Zabbix权限提升
  • java枚举和mybaits-plus结合实现映射输出和存储
  • VScode怎么运行一个c语言程序
  • ChatGPT与认知科学:人机协同的未来图景
  • STM32 IIC总线死锁问题总结
  • 洛谷——P3372 【模板】线段树 1
  • webpack吐环境分析
  • 为什么使用ollama运行的模型不用gpu也可以使用
  • [攻防世界] easyphp writeup
  • Graph Neural Network(GNN)
  • 如何通过全流量溯源分析系统实现高效的网络质量监控
  • JavaSE核心知识点04工具04-02(IDEA)
  • 关于(stream)流
  • MySQL的基础操作
  • 内网搭建NTS服务器
  • 网络安全之Web渗透加解密
  • 原子操作(Atomic Operations)在SOC中的应用场景
  • 【R语言编程绘图-函数篇】