【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和沿 ...
随机推荐
- Linux下如何查看tomcat是否启动、查看tomcat启动日志
在Linux系统下,重启Tomcat使用命令的操作! 1.首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 ./shutdown.sh ...
- 解决GitHub下载速度缓慢的问题
随着微软大大宣布GitHub针对个人用户的仓库免费,相信每位开发者都感受到了"真香". 然而因为一些众所周知的原因,国内访问GitHub总会遇到下载速度缓慢.链接意外终止的情况. ...
- css line-height & 图片底部间隙的处理
前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 看大牛张鑫旭的视屏可能会理解的更深一些,点击这里 . line-height 的学习 line-heigh ...
- 怎样理解script标签的defer属性和async属性
如果script标签是引用的外部js文件, 那就会有一个下载js文件这一过程, 为了不因为这个下载过程而阻塞页面解析与渲染, 我们需要一种机制来解决这一问题, 方法之一就是使用 defer和async ...
- Python考试_第一次
python基础数据类型考试题 考试时间:两个半小时 满分100分(80分以上包含80分及格) 一,基础题. 1. 简述变量命名规范(3分) 答:(1) 变量为数字,字母以及下划线的任意组合,且不能以 ...
- VBA if...else语句
一个if语句由一个布尔表达式和一个或多个语句组成.如果条件评估为True,则执行if条件下的语句.如果条件评估为False,则执行else部分块下的语句. 语法 以下是VBScript中的if els ...
- js入门之数组
数组是一种数据类型,数组可以存储很多项, 有序,集合 Array 定义: var names = ['zs','ls','ww','zl'] 访问: 用索引或/下标 数组可以存储多种类型的数据 但是一 ...
- 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解
salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解 建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schem ...
- K2 工作流_【解决方案】车企CAL应用解决方案,攻克新车质检环节管理难题_全球领先的工作流引擎
截止去年,中国已连续第九年成为全球最大汽车市场,与此同时关于乘用车新车售前检查(PDI)相关的诉讼纠纷案件也逐年呈上升趋势(PDI全称为Pre-Delivery Inspection,是经销商对乘 ...
- hibernate使用注解生成表,有时无法生成数据表的原因
待生成表中有字段“desc”或“descripe”等和hibernate关键字,导致和hibernate冲突