洛谷 P1016 旅行者的预算

感觉自己连点生活常识都没有,竟然连油用过之后要减去都不知道,这种贪心模拟题都做不出来……思路在代码里,我菜死了

思路&&代码

//看题解过的。。一点都没有成就感
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; inline int read() {//快读
char c = getchar();
int x = 0, f = 1;
for ( ; !isdigit(c); c = getchar()) if (c == '-') f = -1;
for ( ; isdigit(c); c = getchar()) x = (x << 3) + (x << 1) + (c ^ 48);
return x * f;
} const int N = 11; double d1, d2, c, P, ans;//如题目所说
double now, minn = 1000, you;
//now是当前位置,you是指邮箱里还有多少油,minn用来找小于当前p的p
int n, sjp;
//sjp是当前所在加油站的编号 struct node {//结构体存位置
double d, p;
bool operator < (const node &b) const {
return d < b.d;
}
} e[N]; int main() {
scanf("%lf%lf%lf%lf", &d1, &c, &d2, &P);
n = read();
e[0].d = 0, e[0].p = P;//按要求读入
for (int i = 1; i <= n; i++) scanf("%lf%lf", &e[i].d, &e[i].p);
stable_sort(e, e + 1 + n);//排序保险
double x = c * d2;//加满油走的最远路程
for(int i = 1; i <= n; i++)
if(e[i].d - e[i - 1].d > x) return cout << "No Solution", 0;
//如果两加油站之间的距离大于最远路程,则无解
while(d1 - now) {//d1是总路程,如果d1-now等于0则走到了终点
for(int i = sjp + 1; e[i].d - now <= x &&i <= n; i++) {
if(e[i].p < minn) {//找有没有在最远路程范围内的p小于P的
minn = e[i].p;//如果有就更新,顺便sjp=i
sjp = i;
}
}
if(minn <= P) {
//找到了最远路程范围内比自己的价钱还便宜的
//就让在目前点加的油刚好能够到这个加油站
ans += ((e[sjp].d - now) / d2 - you) * P;
you = (e[sjp].d - now) / d2;//更新油量
}
else if(d1 - now <= x) {
//如果没找到,但d1-now小于x
//说明可以一次到终点,直接到终点并break
ans += ((d1 - now) / d2 - you) * P;
break;
}
else {
//否则就加满油,一直走
//因为在最大范围内也不能走到比当前加油站价钱低的加油站
ans += (c - you) * P;
you = c;//更新油量
}
you = you - (e[sjp].d - now) / d2;//用多少减多少
now = e[sjp].d;//更新当前位置
P = minn;//更新目前的单价
minn = 1000;//还原minn,以便下次搜索
}
printf("%.2lf", ans);
return 0;
}

洛谷 P1016 旅行者的预算的更多相关文章

  1. 洛谷 P1016 旅行家的预算

    P1016 旅行家的预算 题目OJ链接https://www.luogu.org/problemnew/show/P1016 题目描述一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时 ...

  2. 洛谷 P1016 旅行家的预算 模拟+贪心

    目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1016 旅行家的预算 题目描述 一个旅行家想驾驶汽车 ...

  3. 洛谷P1016 旅行家的预算 题解

    主要就是注意一下各个变量的类型别弄混了 https://www.luogu.org/problem/P1016 #include<cstdio> using namespace std; ...

  4. 洛谷P1016 旅行家的预算

    题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2.出发点每升汽油价格P和沿 ...

  5. [NOIP1999] 提高组 洛谷P1016 旅行家的预算

    题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2.出发点每升汽油价格P和沿 ...

  6. 洛谷P1064--金明的预算方案(简单背包)

    https://www.luogu.org/problemnew/show/P1064 #include<iostream> #include<algorithm> #incl ...

  7. 洛谷P1064 金明的预算方案

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”. ...

  8. 洛谷 P5304 [GXOI/GZOI2019]旅行者(最短路)

    洛谷:传送门 bzoj:传送门 参考资料: [1]:https://xht37.blog.luogu.org/p5304-gxoigzoi2019-lv-xing-zhe [2]:http://www ...

  9. 洛谷 P2678 跳石头

    题目背景 一年一度的"跳石头"比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间 ...

随机推荐

  1. 针对.NET Core, Xamarin以及.NET的自动类型安全Rest库: Refit

    本文大部分内容是针对Refit官网的翻译. 官网地址: https://github.com/reactiveui/refit Refit是一个类似于Retrofit的Restful Api库,使用它 ...

  2. 【VSFTP服务】vsftpd文件传输协议

    vsftpd文件传输协议 系统环境:CentOS Linux release 7.6.1810 (Core) 一.简介 FTP(文件传输协议)全称是:Very Secure FTP Server.   ...

  3. mysql快速安装教程详解

    Mysql 一.在https://www.cnblogs.com/zyx110/p/10799387.html中下载如下图中的压缩包 二.将mysql压缩包解压至c盘根目录下 三.把配置文件中的东西复 ...

  4. C++中Lambda表达式转化为函数指针

    // ----------------------------------------------------------- auto combineCallbackLambda = [](GLdou ...

  5. 微信接口调用'updateTimelineShareData','updateAppMessageShareData' 的踩坑记录

    6月份新版微信客户端发布后,用户从微信内的网页分享消息给微信好友,以及分享到朋友圈,开发者将无法获知用户是否分享完成.具体调整点为: ()分享接口调用后,不再返回用户是否分享完成事件,即原先的canc ...

  6. Python进阶(二)

    1.模块和包的概念 python的解决方案是把同名的模块放到不同的包中 1.1,导入模块 要使用一个模块,我们必须首先导入该模块.Python使用import语句导入一个模块.例如,导入系统自带的模块 ...

  7. LeetCode 905. Sort Array By Parity 按奇偶校验排列数组

    题目 Given an array A of non-negative integers, return an array consisting of all the even elements of ...

  8. codeforces #592(Div.2)

    codeforces #592(Div.2) A Pens and Pencils Tomorrow is a difficult day for Polycarp: he has to attend ...

  9. PHP MySQLi 参考手册

    PHP MySQLi函数 PHP MySQLi是MySQL的增强版本,PHP7 已经废弃了MySQL扩展,全面推荐使用MySQLi或者PDO. MySQLi安装>>>>> ...

  10. jmeter对tomcat性能测试

    主要对tomcat的参数做一些记录(jmeter和tomcat在同一个计算机,可能引起测试误差) 我的计算机配置  4核8线程  8G内存 案例一 tomcat  JVM  1.8G堆内存,无数据库操 ...