HDU 2059
来源:互联网 发布:行知科技 编辑:程序博客网 时间:2024/06/05 15:47
http://acm.hdu.edu.cn/showproblem.php?pid=2059
这题想了很久,感觉有了一点点想法了,然后就去写,写到一半才发现自己的想法有问题,没办法了,去看了看别人的题解,才发现自己把题想的太复杂了。
用dp[i]来记录到第i个加油站所用的最小时间,则dp[i] 为第j个加油站直接到第i个加油站的时间加上dp[j],0<= j <i;
把起点和终点初始化为第0个和第n+1个加油站。
#include <cstdio>#include <cstring>#include <string>#include <queue>#include <stack>#include <vector>#include <iostream>#include <algorithm>#include <ctime>#include <fstream>using namespace std;#define int64 __int64#define ll long long#define M 10005double len , c , t , vr , vt1 , vt2;int n;double dp[M] ,arr[M];double Solve(){int i , j;arr[0] = 0;arr[n+1] = len;for (i = 1 ; i <= n+1 ; i++){double MIN = 1<<30;for (j = 0 ; j < i ; j++){double tmp = arr[i]-arr[j];tmp = tmp>c ? c/vt1+(tmp-c)/vt2 : tmp/vt1;if (j != 0)tmp += t;MIN = min(MIN,tmp+dp[j]);}dp[i] = MIN;}return dp[n+1];}int main(){while (~scanf("%lf",&len)){scanf("%d%lf%lf",&n,&c,&t);scanf("%lf%lf%lf",&vr,&vt1,&vt2);for (int i = 1 ; i <= n ; i++)scanf("%lf",arr+i);if (Solve() > 1.0*len/vr)printf("Good job,rabbit!\n");elseprintf("What a pity rabbit!\n");}return 0;}
- HDU 2059
- hdu 2059
- hdu 2059
- HDU 2059
- HDU-2059
- HDU-2059
- hdu 2059
- hdu-2059
- HDU 2059
- HDU 2059
- hdu 2059
- hdu 2059 DP
- hdu 2059 dp
- hdu 2059 简单dp
- hdu 2059(dp)
- HDU 2059 动态规划
- hdu 2059 加油站(dp)
- HDU 2059 JAVA
- OpenCV学习笔记(12)-二叉决策树
- Class 'SoapClient' not found in PHP
- android获取屏幕分辨率大小(DisplayMetrics)
- Android常用小工具的使用方法
- 空间点绕任意轴旋转变换公式
- HDU 2059
- Hibernate session的缓存
- 学习 Linux高级编程06_A
- 盘点大佬高考:马云数学考1分 俞敏洪英语考33分 【人生无常】
- MySQL存储过程----创建索引前,先判断索引是否已经存在,如果存在,则不添加,如果不存在,添加
- fragment
- ZSH配置文件
- 学习 Linux高级编程06_B
- 简单的弹性返回顶部JS代码