bnuoj16491
http://www.bnuoj.com/bnuoj/problem_show.php?pid=16491
题意:有t组测试数据,每组测试数据第一行为n,m,接下来有n种跑法,m为最大的能力,每一种跑法占一行,有a,b,c,d,e。a表示快速跑完这段路途需要的时间,b表示平速跑完这段路途需要的时间,c表示慢速跑完需要花得时间,d表示快速跑完需要消耗的能量,e表示慢速跑完需要小号的能量,平速跑需要消耗的能量为0,问跑完n段路途所需要花得最少时间。
Sample Input
2
1 10
1 2 3 10 10
4 10
1 2 3 10 10
1 10 10 10 10
1 1 2 10 10
1 10 10 10 10
Sample Output
1
6
思路:对于这类多种状态的dp,一般是需要将它的某一个值放入数组,然后将其所要求的值求出来。
这道题,需要开二维,dp[i][j]表示,在第i段路途还有j点能量的时候所花的最少时间.....动态转移很好写,以前做过的题目中也有这类型的,这里不再重复‘
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define M 100000005
int dp[150][150];
int s[150][7];
int main()
{
int text;
scanf("%d",&text);
while(text--)
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
for(int j=0;j<5;j++)
scanf("%d",&s[i][j]);
} for(int i=0;i<=130;i++)
for(int j=0;j<=130;j++)
dp[i][j]=M;
for(int i=0;i<=130;i++)
dp[0][i]=0;
for(int i=1;i<=n;i++)
{
for(int j=m;j>=0;j--)
{
if(j>=s[i][3])
{
int ans=j-s[i][3];
if(dp[i][ans]>dp[i-1][j]+s[i][0])
dp[i][ans]=dp[i-1][j]+s[i][0];
}
if(dp[i][j]>dp[i-1][j]+s[i][1])
dp[i][j]=dp[i-1][j]+s[i][1];
int tmp=j+s[i][4];
if(tmp>m)
tmp=m;
if(dp[i][tmp]>dp[i-1][j]+s[i][2])
dp[i][tmp]=dp[i-1][j]+s[i][2];
}
}
int minx=M;
for(int i=0;i<=m;i++)
if(dp[n][i]<minx)
minx=dp[n][i];
printf("%d\n",minx);
}
return 0;
}
bnuoj16491的更多相关文章
随机推荐
- JMeter入门:Java Request实例 (转)
转自:http://blog.csdn.net/czp11210/article/details/26174969 目的:对Java程序进行测试: 一.核心步骤 1.创建一个Java工程: 2 ...
- ContactsContract.Contacts之sort_key
// 从Contacts表中找出所有联系人 Cursor cursor = context.getContentResolver().query( ContactsContract.C ...
- 【微信小程序】 引用公共js里的方法
一个小程序页面由四个文件组成,一个小程序页面的四个文件具有相同路径与文件名,由此我们可知一个小程序页面对应着一个跟页面同名的js文件.可是当有些公共方法,我们想抽离出来成为一个独立公共的js文件.我们 ...
- you need to know those webs !
J2me开发网 http://www.j2medev.com/bbs/index.asp J2me社区 http://www.j2meforums.com/forum/ csdn http://www ...
- HDUOJ---2082
找单词 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDUOJ----(1084)What Is Your Grade?
关键是自己没有读懂题目而已,不过还好,终于给做出来了...... What Is Your Grade? Time Limit: 2000/1000 MS (Java/Others) Memor ...
- ubuntu 忘记root密码了不用怕,看这里
方法来自这里:http://jingyan.baidu.com/article/8065f87fe20832233024985a.html
- Windows下面安装和配置Solr 4.9(三)支持中文分词器
首先将下载解压后的solr-4.9.0的目录里面F:\tools\开发工具\Lucene\solr-4.9.0\contrib\analysis-extras\lucene-libs找到lucene- ...
- Hadoop Map/Reduce教程
原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/mapred_tutorial.html 目的 先决条件 概述 输入与输出 例子:WordCount v1.0 ...
- 线程模型、pthread 系列函数 和 简单多线程服务器端程序
一.线程有3种模型,分别是N:1用户线程模型,1:1核心线程模型和N:M混合线程模型,posix thread属于1:1模型. (一).N:1用户线程模型 “线程实现”建立在“进程控制”机制之上,由用 ...