HDU 2059 龟兔赛跑 思想基本正确,但是没有独立做出来,以后再自我考察 update
2012-08-31 10:26
337 查看
主要原因是仅仅考虑了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代码:
2013.4.13 update
今天看同学在做这题,就再做一遍,顺利AC。看来功力有所提升。。
以下是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 ; else e = 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 = 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; }
相关文章推荐
- RxJava2.x是一个非常棒的流式编程,采用的观察者模式思想,事件的产生者产生事间之后发送给绑定的接受者,接受顺序与发送顺序一致.但是 是独立于RxJava1.x存在,本文讲解RxJava2.x的简
- c# wpf项目运行调试后看到设置的项目图标没有正确显示出来解决方案
- LinkedList基本用法,真得很详细,借鉴了,以后再遇到类似的问题啊,不仅要收集起来博文,更要自己争取写出来!
- HDU 2059 龟兔赛跑 DP
- HDU 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- HDU 2059 龟兔赛跑(DP)
- hdu 2059:龟兔赛跑(动态规划 DP)
- hdu 2059 龟兔赛跑
- HDU 2059 龟兔赛跑 (DP)
- tomcat启动正常,但是访问项目时,404. Eclipse没有正确部署工程项目
- hdu 2059 龟兔赛跑
- POJ1002在vs2017上运行的正确,也没有报错,但是在POJ上提交时出现Compile Error:
- 笔记本wifi共享出来能够连接但是没有网速
- HDU 2059 龟兔赛跑
- hdu2059——龟兔赛跑
- 能连接打印服务器,并且能看到服务器上的共享打印机,但是不能连接打印机,有提示信息:“操作无法完成,键入的打印机名不正确,或者指定的打印机没有连接到服务器上,有关详细信息,请单击帮助”。
- SVN提示update更新成功,但是本地文件却没有更新
- hdu 2059 龟兔赛跑(动态规划DP)
- hdu 2059 龟兔赛跑(DP)