【luogu1016】旅行家的预算--模拟
题目描述
一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1D1D1、汽车油箱的容量CCC(以升为单位)、每升汽油能行驶的距离D2D2D2、出发点每升汽油价格PPP和沿途油站数NNN(NNN可以为零),油站iii离出发点的距离DiDiDi、每升汽油价格PiPiPi(i=1,2,…,Ni=1,2,…,Ni=1,2,…,N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。
输入格式
第一行,D1D1D1,CCC,D2D2D2,PPP,NNN。
接下来有NNN行。
第i+1i+1i+1行,两个数字,油站i离出发点的距离DiDiDi和每升汽油价格PiPiPi。
输出格式
所需最小费用,计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。
输入输出样例
275.6 11.9 27.4 2.8 2
102.0 2.9
220.0 2.2
26.95
说明/提示
N≤6,其余数字≤500
思路:
这是道模拟题,注意情况讨论。
代码:
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<algorithm>
#define N 100000
using namespace std;
double d1,c,d2,p,maxx,mo,len;
int n;
struct node{
double cos,dis;
}e[N];
bool cmp(node a,node b)
{
return a.dis<b.dis;
}
int move(int now)
{
int can=99999;
int f=e[now].dis;
for(int i=now+1;i<=n&&e[i].dis-f<=maxx;i++)
{
if(e[i].cos<e[now].cos)
{
mo+=(e[i].dis-f-len)/d2*e[now].cos;
len=0;
return i;
}
if(can==99999||e[i].cos<e[can].cos)can=i;
}
if(d1-e[now].dis<=maxx)
{
mo+=(d1-e[now].dis-len)/d2*e[now].cos;
return 9999;
}
if(can==99999)
{
puts("No Solution");
return -1;
}
else
{
mo+=c*e[now].cos;
len+=(maxx-e[can].dis+f);
return can;
}
}
int main()
{
scanf("%lf%lf%lf%lf%d",&d1,&c,&d2,&p,&n);
for(int i=1;i<=n;i++)
{
scanf("%lf%lf",&e[i].dis,&e[i].cos);
}
e[0].dis=0;
e[0].cos=p;
sort(e+1,e+n+1,cmp);
maxx=c*d2;
int k=0,t;
do{
t=move(k);
k=t;
if(t==-1)return 0;
}while(t!=9999);
printf("%.2f",mo);
return 0;
}
【luogu1016】旅行家的预算--模拟的更多相关文章
- 洛谷 P1016 旅行家的预算 模拟+贪心
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1016 旅行家的预算 题目描述 一个旅行家想驾驶汽车 ...
- 洛谷 P1016 旅行家的预算
P1016 旅行家的预算 题目OJ链接https://www.luogu.org/problemnew/show/P1016 题目描述一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时 ...
- 旅行家的预算(NOIP1999&水题测试2017082301)
题目链接:旅行家的预算 这题还可以,不算太水. 这题贪心即可. 我们采取如下动作: 如果在装满油的情况下能到达的范围内,没有加油站,则无解. 如果在装满油的情况下能到达的范围内,油价最低的加油站的油价 ...
- 蓝桥杯 算法训练 ALGO-15 旅行家的预算
算法训练 旅行家的预算 时间限制:1.0s 内存限制:256.0MB 问题描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车 ...
- P1016 旅行家的预算
P1016 旅行家的预算 题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2 ...
- codevs 1046 旅行家的预算
传送门 1046 旅行家的预算 1999年NOIP全国联赛普及组NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold题解 题目描述 Des ...
- P1016 旅行家的预算——贪心
P1016 旅行家的预算 贪心求,在当前点如果能到达距离最近的油价比他小的就直接去油价比他小的, 如果在可行范围内没有比他油价小的,就加满开到可行范围内油价最小的点: 这么做是对的,我不会证明: 还有 ...
- [luogu]P1016 旅行家的预算[贪心]
[luogu]P1016 旅行家的预算 题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能 ...
- NOIP1999 旅行家的预算
题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2.出发点每升汽油价格P和沿 ...
随机推荐
- app实现长按出现弹窗 或者 出现 删除
<!-- Kpi --> <template> <div class="kpi_container"> <nav-bar :title=& ...
- vue.js移动端app:初始配置
本系列将会用vue.js2制作一个移动端的webapp单页面,页面不多,大概在7,8个左右,不过麻雀虽小,五脏俱全,常用的效果如轮播图,下拉刷新,上拉加载,图片懒加载都会用到.css方面也会有一些描述 ...
- Web前后端分离开发(CRUD)及其演变概括
今天学习了前后端分离开发模式又从网上查了一些资料就写了一篇博客分享: 一.为什么分离前后端 1.1早期开发 1.2后段为主mvc模式 1.2.1Structs框架介绍 1.2.2Spring mcv开 ...
- springboot 集成fastDfs
pom.xml 引入依赖 <dependency> <groupId>com.github.tobato</groupId> <artifactId>f ...
- Eureka常见问题
一 Eureka注册慢问题默认情况下,服务注册到Eureka Server过程较慢.在开发或测试时,常常希望加速这一过程,从而提高工作效率.服务注册涉及到周期性心跳,默认30秒一次.只有当实例.服务端 ...
- ASP.NET全局编码和语言
// /*--------------- // // 使用地方:ASP.NET 项目 // // // // 文件名: // // 文件功能描述:可控制整个项目的一个统一编码格式和语言文字显示 ...
- 浅析web网站反向代理的配置
一.背景 最近在部署项目到web服务器上时,该项目有一个打开视频监控的功能,视频的服务器是一台内网的服务器,不允许设置外网端口访问,网站服务器和视频服务器在同一个局域网内,可以相互联通.网络拓扑图如下 ...
- 在函数作用域嵌套下使用this
var myObj = { specialFunction: function () { console.log("specialFunction."); ...
- session过期,登录页面嵌套问题解决
项目主页是框架模式时,如果登录后长时间没有活动(操作),存储在session中的登录信息过期了,这时再去进行操作时,就会出现登录页面嵌套的问题,怎么解决呢? 这里介绍一种方法,只需要加上一段javas ...
- form-create教程:移除默认提交按钮
本文将介绍form-create如何修改,隐藏默认提交按钮 form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成器.并且支持生成任何 Vue 组件.结 ...