题目一:传送门

思路:水题,模拟即可

题目二:传送门

思路: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. vue的双向数据绑定实现原理

    在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出原理.本篇文章中我将会仿照vue写一个双向数据绑定的实例,名字就叫myVue吧.结合注释,希望 ...

  2. TZOJ 2415 Arctic Network(最小生成树第k小边)

    描述 The Department of National Defence (DND) wishes to connect several northern outposts by a wireles ...

  3. VTP

    VTP VLAN中继协议(Vlan Trunking Protocol),是CISCO专用协议.VTP负责在VTP域内同步VLAN信息,这样就不必在每个交换机上配置相同的VLAN信息.VTP还提供一种 ...

  4. 【校招面试 之 C/C++】第32题 C++ 11新特性(三)之for关键字

    1.for循环的一般写法: int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int i = 0; i < 10; i++) cout ...

  5. xadmin系列之零碎的小点

    1.获取某张表的某个字段的属性 意思就是获取括号中的属性 class app1Person(models.Model): pid = models.AutoField(primary_key=True ...

  6. 利用dom4j读写XML

    public static HashMap<String, String> ReadConfig() { HashMap<String, String> map=new Has ...

  7. go语言template包中模板语法总结

    package main; import ( "html/template" "os" "fmt" ) type Person struct ...

  8. (转载)Ubuntu下安装Qt

    转载自:http://blog.csdn.net/timidsmile/article/details/7716201 Ubuntu下安装Qt 1: sudo apt-get install qt4- ...

  9. webstorm 打包angular Module build failed: Error: No PostCSS Config found

    angular创建项目后,在webstorm中启动时,报出如题错误,奇怪的是我从命令行启动(ng server)是没有问题的,多方寻求无果,在网上看到过说要加一个配置文件,我不信.我觉得是我配置哪里有 ...

  10. 文件操作 day8

    一,文件操作基本流程. 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众 ...