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

【题解】Luogu P1016 [NOIP 1999 普及组/提高组] 旅行家的预算

思路

与 P9749 [CSP-J 2023] 公路 颇为类似。

很显然的贪心:要在油费少的加油站加更多油。

模拟驾驶顺序:从 \(0\) 点出发,寻找油费低的加油站。如果能开到一个油费比当前点还低的站,那就加到刚好开到那一站的油,后面的路程用新加油站的油一定更优;如果开不到,那就找一个能开到的油费最低的站加油,但因为新站不优于本站,我们要让尽可能多的路程用本站的油,所以此次要加满,除非还未加满就到达了终点。

虽然思路很好想,但是模拟过程非常繁杂,要计算很多乱糟糟的式子并判断很多特殊情况。而且据说数据很水,我也不知道我的做法究竟是否正确。

实现

#include<bits/stdc++.h>
using namespace std;
int n,lst;
double s,c,l;
double dis,fue,ans;
double d[10],p[10];
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>s>>c>>l>>p[0]>>n;for(int i=1;i<=n;i++) cin>>d[i]>>p[i];for(int i=0;i<n;i++){int flag=1;double minp=510,t,tar,tfue;for(int j=i+1;j<=n;j++){if((d[j]-d[i])/l>c) break;else flag=0;if(p[j]<p[i]){ans+=((d[j]-d[i])/l-fue)*p[i];fue=0;i=j-1;flag=2;break;}if(p[j]<minp){minp=p[j];t=min((c-fue),(s-d[i])/l)*p[i];tfue=min(c,fue+(s-d[i])/l)-(d[j]-d[i])/l;tar=j;flag=3;}}if(flag==1){cout<<"No Solution";return 0;}else if(flag==3){ans+=t;i=tar-1;fue=tfue;} }if((s-d[n])/l>c) cout<<"No Solution";else{ans+=((s-d[n])/l-fue)*p[n];cout<<fixed<<setprecision(2)<<ans;}return 0;
}
http://www.jsqmd.com/news/79369/

相关文章:

  • Java并发编程面试题:ThreadLocal(8题)
  • GPT-5.2来了,老金详细给你说说它为什么是王
  • Memento播放器终极指南:用视频学习日语的完整解决方案
  • 解锁京东LOC本地化订单管理新体验:全自动卡密发码核销解决方案
  • Nuklear即时模式GUI:颠覆传统UI设计的5大核心优势
  • 家具设计软件Room Arranger Portable
  • 【题解】Luogu P5175 数列
  • 做项目不赚钱?垫资、改需求、要钱难?不如换个思路
  • 公司上ERP,有什么好的建议吗?
  • 字符串中 26 个英文字母的频率统计(不区分大小写)
  • 震惊!这家Linux开发板让工程师集体沉默,真相竟然是……
  • 下一代盲盒系统核心架构解析:JAVA-S1如何打造极致公平与全球化体验
  • Python 3 解释器
  • Git 开发常用命令速查手册
  • 洛雪音乐助手
  • Ⅰ、Ⅱ、Ⅲ型裂纹应力
  • MySQL 慢查询定位与 SQL 性能优化实战指南
  • arXiv 2025|RGB-Th-Bench:第一个专注于可见光–热成像理解的密集型视觉语言模型基准
  • 如快(sofast)
  • 【深度收藏】模型蒸馏vs微调:技术详解+代码实战,两种技术的区别与组合使用指南
  • Vue 开发者必看:3 步搞定 dart-sass 替换 node-sass(告别编译慢 +
  • Ascend C 生态深度集成:从 PyTorch/MindSpore 到大模型部署全流程实战
  • 乡村煮粥达人之菜豆腐米饭
  • Buck Boost Buck-Boost
  • K8sOperator 有状态服务如何管理
  • Ascend C 高阶编程艺术:多核协同、流水线调度与异构任务编排实战
  • C语言变量和算数操作符全解析1
  • 三十五. Keccak256 哈希函数
  • git和github的区别
  • 鸿蒙与 Electron 的融合探索:跨平台开发新思路(附代码案例)