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 ...
随机推荐
- Anaconda常用命令大全
使用conda 首先我们将要确认你已经安装好了conda 配置环境 下一步我们将通过创建几个环境来展示conda的环境管理功能.使你更加轻松的了解关于环境的一切.我们将学习如何确认你在哪个环境中,以及 ...
- 问题1:设置了text-overflow : ellipsis未起作用
<style type="text/css"> * { padding: 0; } .div01 , .div02 { margin-top: 10px; border ...
- HDU 3251 Being a Hero(最小割+输出割边)
Problem DescriptionYou are the hero who saved your country. As promised, the king will give you some ...
- 【转】微信公众号h5网页被嵌入广告 不知道什么原因
这个是因为http劫持导致的.HTTP劫持是在使用者与其目的网络服务所建立的专用数据通道中,监视特定数据信息,提示当满足设定的条件时,就会在正常的数据流中插入精心设计的网络数据报文,目的是让用户端程序 ...
- widdow.locationg.可跟的参数,获取url不同的地址
- ELK日志系统:Filebeat使用及Kibana如何设置登录认证(转)
原文地址:http://www.cnblogs.com/yjmyzz/p/filebeat-turorial-and-kibana-login-setting-with-nginx.html 根据el ...
- golang 常用的正则查找与替换
package main; import ( "regexp" "fmt" "strings" ) func main() { //1.过正 ...
- Query to find the eligible indexes for rebuilding
Query to find the eligible indexes for rebuilding The following script can be used to determine whic ...
- appache压力测试
apache自带压力工具测试说明: Usage: ab [options] [http[s]://]hostname[:port]/pathOptions are: -n requests Numbe ...
- iOS 用其他应用程序打开文件功能
先摘抄一段我抄别人用的. <key>CFBundleDocumentTypes</key> <array> <dict> ...