[Vijos1149]驾车旅游解题报告
来源:互联网 发布:新房装修必知 编辑:程序博客网 时间:2024/05/04 09:12
这道题最关键的地方就是对除非汽车无法用油箱里的汽油达到下一个加油站或目的地,在油箱里还有不少于最大容量一半的汽油时,驾驶员从不在加油站停下来。这句话的翻译,我一开始想错了,真正清晰的等价叙述应为:
驾驶员可以在油站停下来,当当前油箱里的汽油小于最大容量的二分之一或汽车无法用油箱里的汽油达到下一个加油站或目的地;
驾驶员可以不在油站停下来,当汽车可以用当前油箱里的汽油达到下一个加油站或目的地。
#include<iostream>using namespace std;#include<cstdio>#include<cmath>#include<algorithm>#include<cstring>float minx[51],ans=0x7fffffff,v,S;int n;struct S{float x,p;inline bool operator < (S a) const {return x<a.x;}}a[51];inline void dfs(int x,float V,float now){if(x==n){ans=min(ans,now);return;}if(now+max((float)0,((a[n].x-a[x].x)/S-V))*minx[x]>=ans)return;if(V<v/2||V*S<a[x+1].x-a[x].x)dfs(x+1,v-(a[x+1].x-a[x].x)/S,now+(v-V)*a[x].p+20);if(V*S>=a[x+1].x-a[x].x)dfs(x+1,V-(a[x+1].x-a[x].x)/S,now);}int main(){float ww;scanf("%f%f%f%f%d",&a[50].x,&v,&S,&ww,&n);a[n].x=a[50].x;int i;for(i=0;i<n;++i)scanf("%f%f",&a[i].x,&a[i].p);sort(a,a+n);minx[n-1]=a[i].p;for(i=n-2;i>-1;--i)minx[i]=min(minx[i+1],a[i].p);dfs(0,v-a[0].x/S,ww);printf("%.1f",ans);}
0 0
- [Vijos1149]驾车旅游解题报告
- 旅游路线 解题报告
- hhu 5177 旅游路线 floyd 解题报告
- NOI1994 最佳旅游路线 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- Antiprime解题报告
- expr解题报告
- 华容道解题报告
- tju解题报告
- zju1062/pku1095解题报告
- UsacoGate解题报告 --- 序曲
- ZJU 2060 解题报告
- c++11月总结
- 技术与管理
- JMeter 服务器性能监测插件介绍
- Lucene简介&Lucene示例
- [LeetCode]Path Sum
- [Vijos1149]驾车旅游解题报告
- POJ2375 Cow Ski Area
- 探索:怎樣去顯示fps
- 通过ip得到国家的ip库安装以及使用
- [iOS]Objective-C利用协议实现回调函数(类似java的回调函数)
- [LeetCode]Path Sum II
- 第十一章 线程
- Android 之 使用File类在SD卡中读取数据文件
- Hbrust2181