题目一:传送门

思路:水题,模拟即可

题目二:传送门

思路:dp,决策每个充电站是否要充电。(决策只有搜索,DP两种解决方法)

(1)考虑状态的个数,n+2个,因为除了n个还有位置0,终点len两种状态;

前一个状态可以推出后一个状态,所以可以得到循环的顺序外循环1--n,内循环i-1--0。

(2)状态转移方程:dp[i]=MIN(dp[i],dp[i]+x,dp[i]+y),x表示要充电,y表示不要充电。

(3)考虑x和y的求法:

如果j==0,只考虑x即可,因为第一次肯定充满电

如果j!=0,考虑x,y分为dis(i-j)>=c和dis(i-j)<c两种情况,分别计算就行(一开始就是这里被卡住了,

如果dis(i-j)>c只要将它分为两部分考虑,分别计算v1的速度耗时和v2速度耗时即可)。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = ;
double MIN(double a,double b)
{
return a<b?a:b;
}
double dp[maxn],l[maxn]; //记录每次的时间,为浮点型。
int main(void)
{
double x,y,timtu,num,num2;
int len; //初始题中的变量均为整形,n个位置除外
int n,c,t;
int v,v1,v2;
int i,j;
while(~scanf("%d",&len))
{
scanf("%d%d%d",&n,&c,&t);
scanf("%d%d%d",&v,&v1,&v2);
for(i=;i<=n;i++) scanf("%lf",&l[i]);
l[]=;l[n+]=len;
for(i=;i<maxn;i++) dp[i]=INT_MAX;dp[]=; //初始化处理dp,比较min,所以初始化最大
timtu=len*1.0/v;
for(i=;i<=n+;i++)
{
for(j=i-;j>=;j--)
{
if(j==) //特殊情况
{
num=l[i]-l[];
if(num<=c) dp[i]=MIN(dp[i],dp[]+1.0*num/v1);
else
{
num2=1.0*c/v1;
num-=c;
num2+=1.0*num/v2;
dp[i]=MIN(dp[i],dp[]+num2);
}
}
else
{
x=t;num=l[i]-l[j];y=1.0*num/v2; //x表示需要充电,y表示不用充电。
if(num<=c) x+=num*1.0/v1;
else
{
x+=c*1.0/v1;
num-=c;
x+=num*1.0/v2;
}
dp[i]=MIN(dp[i],dp[j]+MIN(x,y));
}
}
}
if(dp[n+]>=timtu) printf("Good job,rabbit!\n");
else printf("What a pity rabbit!\n");
}
return ;
}

1-10假期训练(hdu-2059 简单dp)的更多相关文章

  1. HDU 1087 简单dp,求递增子序列使和最大

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  2. hdu 2471 简单DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2571 简单dp, dp[n][m] +=(  dp[n-1][m],dp[n][m-1],d[i][k ...

  3. 2018.10.14 NOIP训练 圣诞树(简单dp)

    传送门 sbDP题. 曾经一直TLE不知道为什么. 这次发现输入有坑233. 代码

  4. HDU 1708 简单dp问题 Fibonacci String

    Fibonacci String Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. hdu 1257 && hdu 1789(简单DP或贪心)

    第一题;http://acm.hdu.edu.cn/showproblem.php?pid=1257 贪心与dp傻傻分不清楚,把每一个系统的最小值存起来比较 #include<cstdio> ...

  6. HDU - 1300 简单DP

    题意:买珠子的方案有两种,要么单独买,价钱为该种类数量+10乘上相应价格,要么多个种类的数量相加再+10乘上相应最高贵的价格买 坑点:排序会WA,喵喵喵? 为什么连续取就是dp的可行方案?我猜的.. ...

  7. [hdu 1398]简单dp

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1398 看到网上的题解都是说母函数……为什么我觉得就是一个dp就好了,dp[i][j]表示只用前i种硬币 ...

  8. HDU 2059 【DP】

    题意: 中文. 思路: 这题不是自己的思想. 当对第i个点的最优值进行求解的时候一定存在最后一个加油的点j.这里j直接枚举. 另外将0和n+1个加油站定义为起点和终点. dp需要加强训练. #incl ...

  9. Max Sum (hdu 1003 简单DP水过)

    Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

随机推荐

  1. 两种方法修改pyhton爬虫的报头

    方法一: import urlib.request url = "" headers=("User-Agent","") opener = ...

  2. jQuery MD5 加密

    一 MD5 概述 MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value) ...

  3. 《基于Nginx的中间件架构》学习笔记---3.nginx的目录分析

    一.目录分析 用yum的方式进行安装实质上装的都是一个个的rpm包,对于linux系统rpm包管理器,我们使用命令rpm -ql  服务名称 就可以列出我们已经安装的服务所对应安装的每一个文件所在的目 ...

  4. js 定时执行

    代码: 格式例子: setInterval(方法名,1000*60); setInterval("方法名()",1000*60); setInterval(function () ...

  5. vue解决遮罩层滚动方法

    vue 遮罩层阻止默认滚动事件 在写移动端页面的时候,弹出遮罩层后,我们仍然可以滚动页面. vue中提供 @touchmove.prevent 方法可以完美解决这个问题 <div class=& ...

  6. 线特征---LineMatching代码运行(五)

    [1]    https://github.com/dlut-dimt/LineMatching The code is based on Matlab.  https://github.com/ka ...

  7. docker-ce-17.09 仓库的创建与使用

    docker仓库是集中存放镜像的地方,注册服务器是存放仓库的具体服务器,每个服务器上可以有多个仓库,每个仓库下面有多个镜像. 一.查找仓库中镜像 > docker search centos 二 ...

  8. 字典的增删改查 daty 5

    字典:python中非常重要的数据类型,在python中唯一一个映射的数据类型数据类型分类 按照数据可变与不可变: # 不可变数据类型: int str bool tuple # 可变数据类型: li ...

  9. c#特性attribute:(二)

    日志 初始化 特性类里边构造函数里的属性,带参数不带参数的 ******特性是编译时是不加到il 中的,是加到metadata中 ,本身对程序运行没有影响,除非我们主动的读取和使用区供反射可以使用. ...

  10. Linux内核哈希表分析与应用

        目录(?)[+]   Linux内核哈希表分析与应用 Author:tiger-johnTime:2012-12-20mail:jibo.tiger@gmail.comBlog:http:// ...