BIT2014级软件学院程序设计-08传送带
2016-03-02 15:19
176 查看
Description
小明的飞机快要赶不上了!幸好大厅的路上有一些传送带。每个传送带都有一定的速度,传送带之间没有重叠。
小明自己行走的速度为w,如果传送带的速度为v的话,在传送带上走的速度就是w+v。
但是小明还是很着急,所以他决定跑一段时间t。他跑的速度是r,那么如果传送带的速度为v的话,在传送带上跑的速度就是r+v。
对于时间t,他不一定要连续跑,可以走走再跑。也不一定非要跑够t。
问小明至少需要多少时间才能到达终点。
Input
输入第一行为用例数T,1<=T<=40。每一组用例的第一行包含五个整数:
X:为大厅的长度,小明起始位于0,终点是X,1<=X<=1000000
W:为走路的速度
R:为跑步的速度,1<=W<R<=100
t:最多能跑t秒,1<=t<=1000000
n:传送带的个数
接下来的n行,表示n个传送带的详细信息。每行包含三个整数:Bi,Ei,Vi,分别表示传送带的起始位置、终止位置和速度,0<=Bi<Ei<=X,1<=vi<=100。任意两个传送带都不相交。
Output
每组用例输出包含一个数字,表示至少需要多少时间。输出四舍五入到6位小数。Sample Input
310 1 4 2 2
0 1 1
9 10 1
10 1 4 1000 2
0 1 1
9 10 6
20 1 3 20 5
0 4 5
4 8 4
8 12 3
12 16 2
16 20 1
Sample Output
3.0000002.300000
3.538095
贪心。分清楚是在传送带的时候跑还是平底的时候跑。
// debug.cpp : 定义控制台应用程序的入口点。 // #include<stdio.h> #include<stdlib.h> #include<string.h> #define maxn 1005 typedef struct { double st, ed, v; }NODE; NODE chuan[maxn]; int check_0(double k) { if (k > -0.0000001&&k < 0.0000001) return 1; return 0; } double r, t_rest, w; double check(double far, double v) { double t_fuck; if (check_0(t_rest))//没有剩余跑的时间 { return (far / (v + w)); } if ((v + r)*t_rest<far)//不能全用跑的 { t_fuck = t_rest; t_rest = 0.0000; return (t_fuck + (far - t_fuck*(r + v)) / (v + w)); } t_rest = t_rest - far / (r + v);//全跑 return far / (r + v); } int cmp(const void*a, const void*b) { return (*(NODE *)a).v - (*(NODE *)b).v; } int main(void) { double sum_chuan; int T, n, i; double far, v, x, t, walk; double t_cha, ans; scanf("%d", &T); while (T--) { sum_chuan = 0.0; scanf("%lf%lf%lf%lf%d", &x, &w, &r, &t, &n); for (i = 0;i < n;i++) { scanf("%lf%lf%lf", &chuan[i].st, &chuan[i].ed, &chuan[i].v); sum_chuan += (chuan[i].ed - chuan[i].st); } qsort(chuan, n, sizeof(chuan[i]), cmp); walk = x - sum_chuan; far = walk;v = 0;t_rest = t; ans = check(far, v); for (i = 0;i < n;i++) { far = chuan[i].ed - chuan[i].st; v = chuan[i].v; ans += check(far, v); } printf("%.6lf\n", ans); } }
相关文章推荐
- vi 编辑器
- servlet基本概念
- 笔试整理2
- 自学MVC看这里——全网最全ASP.NET MVC 教程汇总
- web应用负载均衡策略
- Eclipse 配置tomcat 不带项目名称
- Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
- 图像处理 C语言 hough变换 检测直线
- 关于HTML5的编码为题
- 多浏览器支持ActiveX控件
- JAVA 变量的3种形式
- c++第一次实验(复习)
- [转]MEF学习
- java 空指针异常其他原因
- ScaleGestureDetectorde 使用方法
- linux下apache源码安装
- C++第一次作业
- C++第1次实验
- weblogic12.1.3-反序列漏洞补丁过程
- 解决INSTALL_FAILED_VERSION_DOWNGRADE