Pro

Luogu2209

Sol

贪心题。对于每一个加油站,我们可以根据这个加油站的坐标来确定如果在路过这个加油站之后加满油,最远可以到哪,而我们在求最远可以到哪的时候也可以求出路过的这些加油站中价钱最低的那个。如果存在价钱最低的,并且不是我们当前在的这个加油站的话,我们就花钱买正好能到达最便宜的加油站的油。但如果我们就在最便宜的地方,那么我们在这里加满油,到下一个最便宜的位置。

这样的贪心策略就能使我们在到达最后的时候花费的油钱最少。

Code

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;struct Node {long long opt , val;bool operator < (const Node &a) const {return opt < a.opt;}
};
Node map[50005];
long long n , res , to;
long long data[50005] , now = 0 , val , nxt , en; long long find(long long s,long long lim)
{long long noww=s+1,too=50003;while(noww<=n){if(map[noww].opt - map[s].opt > lim)return too;if(map[noww].val < map[s].val)return noww;if(map[noww].val < map[too].val)too = noww;noww++;}
}int main() {scanf("%lld%lld%lld%lld",&n,&val,&res,&to);for(long long i=1; i<=n; i++) {scanf("%lld%lld",&map[i].opt,&map[i].val);data[i] = map[i].opt;}sort(map+1 , map+n+1);map[50003].val = 2e9;if(map[1].opt > res || to - map[n].opt > val) {printf("-1");return 0;}sort(data+1 , data+n+1);nxt = find(now , res);if(nxt > n) {printf("0");return 0;}res -= map[nxt].opt;now = nxt;if(map[n].opt == n)map[n].val = 0;else {n++;map[n].opt = to;map[n].val = 0;}while(now < n) {nxt = find(now , val);if(map[nxt].val > map[now].val) {en += (val-res)*map[now].val;res = val - map[nxt].opt + map[now].opt;} else {en += (map[nxt].opt - map[now].opt - res)*map[now].val;res = 0;}now = nxt;}printf("%lld",en);return 0;
}

[USACO13OPEN]Fuel Economy【贪心】相关推荐

  1. R语言系统自带及附属包开元可用数据集汇总

    R语言系统自带及附属包开元可用数据集汇总 目录 R语言系统自带及附属包开元可用数据集汇总 #R自带数据集 #R的各种包自带数据集 #R自带数据集 向量 euro #欧元汇率,长度为11,每个元素都有命 ...

  2. 棒棒糖 宏_棒棒糖图表

    棒棒糖 宏 AKA: lollipop plot 又名:棒棒糖情节 WHY: a lollipop chart (LC) is a handy variation of a bar chart whe ...

  3. 创意产品 分析_使用联合分析来发展创意

    创意产品 分析 Advertising finds itself in a tenacious spot these days serving two masters: creativity and ...

  4. ggplot2作图4

    ??theme_bw()参数的使用 ??theme_bw()##用法,其他的几个内部参数相同 theme_grey(base_size = 15,##整体布局字的缩放比例base_family = & ...

  5. Matlab如何绘制小提琴图?

    小提琴图是box plot 的一种易于阅读的替代品,它用数据的核密度估计替换box plot ,并可选地覆盖数据点本身.原来的盒子形状仍然包括在小提琴中心的灰色盒子/线. 小提琴图是箱形图的超集,可以 ...

  6. Honda CB650R/CB650F

    CB650R是HONDA在2018年底的義大利米蘭車展首度亮相.2019年正式市售的街車車款,同時也是以CB1000R為首,以「Neo Sports Cafe」為家族基因的CB-R車系的第6輛成員. ...

  7. 变速器--中英文翻译

    变速器 变速箱通常不得不在舒适性和效率之间做出选择,但一种新型的"犬牙啮合式"变速箱可以同时改善这两种性能. 随着排放法规的日趋严格,汽车制造商为降低排放的努力已不再局限于改善燃烧 ...

  8. 汽车驱动桥毕业设计【毕业设计(论文) +7张CAD图纸】

    摘要 驱动桥位于传动系末端,其基本功用是增矩.降速,承受作用于路面和车架或车身之间的作用力.它的性能好坏直接影响整车性能,而对于载重汽车显得尤为重要.当采用大功率发动机输出大的转矩以满足目前载重汽车的 ...

  9. 手动型三轴五档手动变速器设计(设计说明书+CAD图纸+外文翻译)

    摘  要 本设计的任务是设计一台用于轿车上的五档手动变速器.合理的设计和布置变速器能使发动机功率得到最合理的利用,从而提高汽车动力性和经济性.变速传动机构的主要作用是改变转距和转速的数值和方向:操纵机 ...

最新文章

  1. MiniGUI - UNIX Domain Socket 封装
  2. 2018年计算机应用基础作业,2018年计算机应用基础作业二答案.doc
  3. I2C 总线原理与架构
  4. list-style样式不显示问题
  5. Java黑皮书课后题第4章:4.19(商业:检测ISBN-10)改写编程练习题3.9,将ISBN号作为一个字符串输入
  6. 方法变量与方法表达式
  7. AbstractBeanFactory 的getBean()方法调用FactoryBean
  8. 遇到一个日志文件变化带来的文件句柄问题
  9. ORA-02290:违反检查约束条件(sys_c0011321)什么原因
  10. java数字高低呼唤_记录某电话交换台 5 分钟内接到的呼唤次数,则样本空间 S={0,1,2, … ,n, … }_Java答案_学小易找答案...
  11. 21天学通Java学习笔记-Day03
  12. mysql知识思维导图
  13. PID控制算法的c语言实现 附录2 直流电机PWM调速系统中控制电压非线性研究
  14. 在使用renderTo中遇到的Uncaught TypeError: Cannot read property 'insertAdjacentHTML' of null
  15. python 相关系数矩阵_用numpy计算Pearson相关系数
  16. MATLAB 如何导入.txt文本
  17. MySQL中对索引的理解 特点 优势_深入理解MySQL索引和优化
  18. java小易——Servlet轻量级服务
  19. 这个教人怎么赚钱的社群,第7年了
  20. rim lighting

热门文章

  1. C#获取上传文件的扩展名
  2. iOS工程开发笔记二
  3. 关于if嵌套性能的问题
  4. 博客园复用别人的博客模板
  5. 2018.12.24-bzoj-2565-最长双回文串
  6. 【前端进阶之路】内存基本知识
  7. jQuery EasyUI 下拉菜单获取日期,最高年份为当前年份,最低年份为当前年份向前推10年...
  8. 复旦大学2013--2014学年第一学期(13级)高等代数I期末考试第八大题解答
  9. jquery 控制frameset frame节点内容(在子窗口中把该窗口中的焦点处的text内容填
  10. mysql在linux下的完整安装