洛谷 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. QuantLib 金融计算——自己动手封装 Python 接口(1)

    目录 QuantLib 金融计算--自己动手封装 Python 接口(1) 概述 QuantLib 如何封装 Python 接口? 自己封装 Python 接口 封装 Array 和 Matrix 类 ...

  2. Allure+pytest 生成测试报告

    简介: python 主流自动化测试报告插件有三个:HTMLTestRunner.BeautifulReport 和 Allure.HTMLTestRunner是一个比较古老的报告模板,界面也不是很好 ...

  3. 使用AvalonEdit实现WPF的Lua编辑器

    原文发布于:https://www.chenxublog.com/2019/07/14/use-avalonedit-make-wpf-lua-editor.html 由于LLCOM里面内置了Lua代 ...

  4. WPF-控件模板

    说起控件模板,还是因为在一次需求实现中,我碰到了一个圆形按钮.一开始我认知的按钮是方形灰不拉几的一个块儿.这如何实现一个圆形按钮? 我最先想到的是使用样式,可是发现根本就没有改变Button形状的属性 ...

  5. ztree选父不选子选子不选父

    var setting = { data: { simpleData: { enable: true } } ,check: { enable: true , chkStyle: 'checkbox' ...

  6. Android Studio 3.5+ 使用androidx的recyclerView

    一 File->project structure->Dependencies: 点击All Dependencies处的加号,选择Library Dependency: 在step1处输 ...

  7. Django models 单表查询

    从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet 1. 查看Django QuerySet执行的SQL .query.__str__()或 .query属性打印执行的sql语句 ...

  8. anaconda配置清华大学开源软件镜像

    配置镜像在anaconda安装好之后,默认的镜像是官方的,由于官网的镜像在境外,使用国内的镜像能够加快访问的速度.这里选择了清华的的镜像.镜像的地址如下:tuna.Anaconda 安装包可以到 ht ...

  9. [PHP] 最简单的权限控制设计

    假设url部分我们只有action和method , 某个控制器下的某个方法 , 比如:log/loginlog   查看日志下的登陆日志, action就是log , method就是loginlo ...

  10. (转)linux内核虚拟文件系统浅析【转】

    转自:https://www.cnblogs.com/woainilsr/p/3590716.html 转自http://hi.baidu.com/_kouu/item/4e9db8758032824 ...