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的更多相关文章
随机推荐
- jQuery仿天猫完美加入购物车
转载自:http://www.iteye.com/topic/1138064 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti ...
- CAS 5.1.x 的搭建和使用(一)—— 通过Overlay搭建服务端
CAS单点登录系列: CAS 5.1.x 的搭建和使用(一)—— 通过Overlay搭建服务端 CAS5.1.x 的搭建和使用(二)—— 通过Overlay搭建服务端-其它配置说明 CAS5.1.x ...
- Java中初级数值类型的大小, volatile和包装类wrapped type的比较
Java中的初级数值类型 Java是静态类型语言, 所有的变量必须先声明再使用. 其初级类型一共8种: boolean: 数据只包含1bit信息, 但是占空间为8-bit, 默认值为false byt ...
- QQ概念版(WPF制作)
984 QQ概念版 编辑 QQ 概念版是腾讯首款NUI(自然用户交互)产品,全面实现了多点触摸操作.是腾讯利用微软最新一代的客户端展现层技术--WPF,打造的IM产品. 中文名 QQ 概念版 游戏 ...
- A. Dreamoon and Stairs(Codeforces Round #272)
A. Dreamoon and Stairs time limit per test 1 second memory limit per test 256 megabytes input standa ...
- PHP实现4种排序算法
1.冒泡排序 冒泡排序其实是基于“交换”.每次从第一个记录开始,一.二两个记录比较,大的往后放,二三两个记录比较...依次类推,这就是一趟冒泡排序.每一趟冒泡排序后,无序序列中值最大的记录冒到序列末尾 ...
- Unix环境高级编程(十九)终端I/O
终端I/O应用很广泛,用于终端.计算机之间的直接连线.调制解调器以及打印机等等.终端I/O有两种不同的工作模式: (1)规范模式输入处理:终端输入以行为单位进行处理,对于每个读要求,终端驱动程序最多返 ...
- Android事件分发机制源代码分析
小小感慨一下,做android有一段时间了,一直以来都是习惯整理笔记存到有道笔记上,没有写博客的习惯. 以后逐步分类整理出来,也算"复习"一遍了 - _ - . android的事 ...
- mark 百度Echarts统计图表
mark http://git.oschina.net/seeyoui/kensite_cms/blob/master/src/main/java/com/seeyoui/kensite/framew ...
- unity3d prefab
用prefab创建的实例,其position/rotation/scale并不会随prefab的position/rotation/scale修改而更新,其它属性才会. 不过如果prefab的某个实例 ...