HDU 2059 龟兔赛跑 思想基本正确,但是没有独立做出来,以后再自我考察 update
来源:互联网 发布:祛斑精华知乎 编辑:程序博客网 时间:2024/04/28 05:09
主要原因是仅仅考虑了dp[i] = f(i-1, i) + dp[i-1].(其中f(i-1,i)表示从第i-1站到第i站的最短时间)其实未必是从前一个加油站到当前加油站,而应该是dp[i] = f(j, i) + dp[j]; (0 < j < i);
以下是AC代码:
#include <stdio.h>#include <stdlib.h>int main (){int L;int N, C, T;int vr, vt1, vt2;int p[103]; //记录各站p[i]到起点的距离 double timeT[103]; //记录第i段的最短时间 double timeR;while ( scanf ("%d",&L) != EOF ){scanf ("%d%d%d", &N , &C, &T);scanf ("%d%d%d", &vr, &vt1, &vt2);//兔子的时间 timeR = L * 1.0 / vr;//记录各站p[i]到起点的距离p[0] = 0;p[N + 1] = L;for (int i = 1; i <= N; i ++){scanf ("%d", &p[i]);}//找到p[i] 到 p[i + 1]段的最短耗时timeT[0] = 0; //递归出口 double len;double e, min;for (int i = 1; i <= N + 1; i ++){min = 9999999.9;for (int j = 0; j < i; j ++){len = p[i] - p[j];if (len > C)e = ( 1.0 * C / vt1 ) + (len - C + 0.0) * 1.0 / vt2 ;elsee = len * 1.0 / vt1 ;e += timeT[j];if (j)e += T;if ( e < min)min = e; }timeT[i] = min;}if (timeT[N + 1] < timeR){printf ("What a pity rabbit!\n");}else printf ("Good job,rabbit!\n");}return 0;}
2013.4.13 update
今天看同学在做这题,就再做一遍,顺利AC。看来功力有所提升。。
#include <iostream>using namespace std;int a[105];//用p【i】表示到第i个充电站的最小时间double p[105];int n, c, t;int vr, vt1, vt2;double countTime(int dis) { double t = 0; if(dis > c) t = 1.0 *(dis-c) / vt2 + 1.0 * c / vt1; else t = 1.0*dis / vt1; return t;}int main() { int L; while(cin >> L) { cin >> n >> c >> t; cin >> vr >> vt1 >> vt2; for(int i = 0; i < n; i++) { scanf("%d", &a[i]); } if(a[n-1] != L) { a[n] = L; n++; } p[0] = countTime(a[0]); for(int i = 1; i < n; i++) { double minValue = countTime(a[i]); for(int j = 0; j < i; j++) { double temp = p[j] + t + countTime(a[i]-a[j]); if(minValue > temp) minValue = temp; } p[i] = minValue; } double tr = 1.0 * L / vr; if(tr > p[n-1]) cout << "What a pity rabbit!" << endl; else cout << "Good job,rabbit!" << endl; } return 0;}
- HDU 2059 龟兔赛跑 思想基本正确,但是没有独立做出来,以后再自我考察 update
- hdu 2059 龟兔赛跑
- HDU 2059 - 龟兔赛跑
- hdu 2059 龟兔赛跑
- HDU 2059 龟兔赛跑
- HDU 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- HDU 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- HDU 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- HDU 2059 龟兔赛跑
- HDU 2059 龟兔赛跑
- java正则表达式处理类
- Mybatis - Mapper文件简练
- 模板的使用
- ORACLE自动主键功能
- Android启动Launcher过程
- HDU 2059 龟兔赛跑 思想基本正确,但是没有独立做出来,以后再自我考察 update
- 各操作系统启动java程序的脚本
- C#温故而知新学习系列之.NET框架高级特性—.NET框架中自身提供的属性(二)
- js版的dateAdd与dateDiff
- 用c++实现urlencode
- IOS json 转 Object / ios json to Object / ios json convert Object
- 有感而发:你为何如此怕“高级”二字?
- poj 1094
- 中学生学单片机带来的学习方法启示