P1016 旅行家的预算

贪心求,在当前点如果能到达距离最近的油价比他小的就直接去油价比他小的,

如果在可行范围内没有比他油价小的,就加满开到可行范围内油价最小的点;

这么做是对的,我不会证明;

还有就是,如果变量定义在外面了,在for循环里面就不要定义了,这个点卡了我一下午;

一直停止运行……

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=;
typedef double dd; struct node
{
dd p,dis;
}s[maxn]; dd all_dis,capa,per_dis,st_p;
int n; bool cmp(node qw,node we)
{
return qw.dis<we.dis;
} dd ans_cost,last;
int main()
{
scanf("%lf%lf%lf%lf%d",&all_dis,&capa,&per_dis,&st_p,&n);
s[].p=st_p;
for(int i=;i<=n;i++)
{
scanf("%lf%lf",&s[i].dis,&s[i].p);
}
s[n+].dis=all_dis;
for(int i=;i<=n;i++)
{
if(s[i+].dis-s[i].dis>capa*per_dis)
{
printf("No Solution\n");
return ;
}
} sort(s+,s+n+,cmp);
for(int i=;i<=n+;)
{
int j,k;
for(j=k=i+;j<=n;j++)
{
k=(s[j].p<=s[k].p?j:k);
if(s[j].p<=s[i].p||(s[j+].dis-s[i].dis)>capa*per_dis) break;
}
if(s[j].p>s[i].p)
{
ans_cost+=(capa-last)*s[i].p;
last=capa-((s[k].dis-s[i].dis)/per_dis);
i=k;
}
else
{
ans_cost+=((s[j].dis-s[i].dis)/per_dis-last)*s[i].p;
last=;
i=j; }
}
printf("%.2lf",ans_cost);
return ;
}

P1016 旅行家的预算——贪心的更多相关文章

  1. [luogu]P1016 旅行家的预算[贪心]

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

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

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

  3. 洛谷 P1016 旅行家的预算

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

  4. P1016 旅行家的预算

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

  5. luogu P1016 旅行家的预算

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

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

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

  7. vijos:旅行家的预算[贪心]

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

  8. 题解 P1016 旅行家的预算

    题目传送门(以纪念调了两个半小时的单调队列) emmm这题单调队列可海星... 因为每个点有油量无限的,但是油箱容量是无限的(正好反的一道题 SP348 EXPEDI - Expedition) 所以 ...

  9. 洛谷P1016 旅行家的预算

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

随机推荐

  1. Java调用WebService方法总结(7)--CXF调用WebService

    CXF = Celtix + XFire,继承了Celtix和XFire两大开源项目的精华,是一个开源的,全功能的,容易使用的WebService框架.文中所使用到的软件版本:Java 1.8.0_1 ...

  2. 纯CSS一个div实现无缝隙尖角框

    话不多说直接先上效果图 其实原理很简单,就是一个带边框的方块加上一个黑色三角形和一个白色三角形,最后通过position定位实现. 代码如下: HTML就一个div <div></d ...

  3. php文件路径处理函数

    basename -- 返回路径中的文件名部分 # 语法 string basename ( string $path [, string $suffix ] ) //> 手册例子 echo & ...

  4. RabbitMQ direct交换器

    1:队列和交换器多次绑定 String[] routekeys={"routekey1","routekey2","routekey3"}; ...

  5. 【CMDB】获取服务器数据

    一.通过agent的方式 原理:服务器定制执行py文件通过subprocess模块采集数据发送给数据收集的机器 数据收集的机器:192.168.11.62 服务器:192.168.11.169 数据收 ...

  6. hive 外部表和内部表的区别和相互转换

    Hive内部表和外部表区别 1.创建内部表时,内部表的数据文件是保存在指定的路径的:如若创建外部表,则只记录数据所在的路径,不会对数据位置做改变. 2.删除表的时候,内部表元数据和数据会跟着一起删除. ...

  7. Maven的下载,配置环境,导入编译器,使用说明一条龙

    什么是Maven?可以认为Maven是写程序时导入jar包的一个轻便的工具. 第一步Maven下载   1.Maven(点击进入),点击一个zip包下载      2.解压maven包,复制maven ...

  8. helm笔记

    一.注意事项 1.values.yaml   中可以使用'#'号注释行,而/templates 下的文件不能用#号,如果要注释可以使用 {{/*  context  */}} 2.{{-    #忽略 ...

  9. VueCli3 使用 NutUI (按需加载、定制化主题)

    创建vue.config.js module.exports = { css: { loaderOptions: { // 给 sass-loader 传递选项 scss: { // @/ 是 src ...

  10. WebAssembly(wasm)是什么?——学习

    WebAssembly 是一种可以使用非 JavaScript 编程语言编写代码并且能在浏览器上运行的技术方案. 参考文章标题:几张图让你看懂WebAssembly 参考地址:https://www. ...