1-10假期训练(hdu-2059 简单dp)
题目一:传送门
思路:水题,模拟即可
题目二:传送门
思路: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)的更多相关文章
- HDU 1087 简单dp,求递增子序列使和最大
Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- 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 ...
- 2018.10.14 NOIP训练 圣诞树(简单dp)
传送门 sbDP题. 曾经一直TLE不知道为什么. 这次发现输入有坑233. 代码
- HDU 1708 简单dp问题 Fibonacci String
Fibonacci String Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 1257 && hdu 1789(简单DP或贪心)
第一题;http://acm.hdu.edu.cn/showproblem.php?pid=1257 贪心与dp傻傻分不清楚,把每一个系统的最小值存起来比较 #include<cstdio> ...
- HDU - 1300 简单DP
题意:买珠子的方案有两种,要么单独买,价钱为该种类数量+10乘上相应价格,要么多个种类的数量相加再+10乘上相应最高贵的价格买 坑点:排序会WA,喵喵喵? 为什么连续取就是dp的可行方案?我猜的.. ...
- [hdu 1398]简单dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1398 看到网上的题解都是说母函数……为什么我觉得就是一个dp就好了,dp[i][j]表示只用前i种硬币 ...
- HDU 2059 【DP】
题意: 中文. 思路: 这题不是自己的思想. 当对第i个点的最优值进行求解的时候一定存在最后一个加油的点j.这里j直接枚举. 另外将0和n+1个加油站定义为起点和终点. dp需要加强训练. #incl ...
- Max Sum (hdu 1003 简单DP水过)
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
随机推荐
- C++ map与unordered_map
map与unordered_map对比 map unordered_map 红黑树(非严格二叉平衡搜索树)实现 哈希表实现 有序 无序 -- 查找时间复杂度为O(1),非常快 空间消耗较大 空间消耗较 ...
- 20165315 实验一 Java开发环境的熟悉
# 20165315 实验一 Java开发环境的熟悉 一.实验内容及步骤 (一)使用JDK编译.运行简单的Java程序 macOS命令行下运行Java 打开终端 输入mkdir 20165315exp ...
- Compile、Make和Build的区别
针对Java的开发工具,一般都有Compile.Make和Build三个菜单项,完成的功能的都差不多,但是又有区别. 编译,是将源代码转换为可执行代码的过程.编译需要指定源文件和编译输出的文件路径 ...
- Shell脚本break和continue命令
在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用 break 和 continue 来跳出循环. break命令 允许跳出所有循环(终止执行后面的所有循环). continu ...
- 设置导航栏和TabBar标题的文字格式
//TabBar样式 [navi.tabBarItem setTitleTextAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSiz ...
- 读取properties文件的信息
1.properties配置文件的信息 fcsimage_path=C://FCSImage 2.Java代码 public final class Config { private static f ...
- Java项目生成可执行jar包、exe文件以及在Windows下的安装文件
1.如何通过eclipse将Java项目生成可执行jar包 首先把在eclipse下的java项目导出jar file 下一步 下一步 下一步 最后点击完成,便生成了可执行的jar文件.可以在刚刚选择 ...
- springmvc中的拦截器interceptor用法
1.配置拦截器 在springMVC.xml配置文件增加: 1 <mvc:interceptors> 2 <!-- 日志拦截器 --> 3 <mvc:intercepto ...
- first H5
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- windows7 Cygwin 下安装 YouCompleteMe 插件
原创文章,欢迎指正!转载请注明~ 从上周就开始想在cygwin上安装YouCompleteMe插件,按照GITHUB上的官方教程安装,由于自己的理解失误,一直搞不清是按照在windows上安装还是按照 ...