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的更多相关文章
随机推荐
- c#委托是什么?事件是不是一种委托?
C#的委托是CTS(公共类型系统)规定的5中类型之一(类类型.结构类型.接口类型.枚举类型.委托类型).它类似于c或c++中的函数的指针,但函数指针只能引用静态方法,而委托既能引用静态方法,也能引用实 ...
- java 管道流代码示例
import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream; public ...
- redis lpop key 当key不存在时,返回nil , 监测redis执行语句是否正常执行
Lpop key 返回值: 列表的头元素. 当key 不存在时, 返回 nil . 需求: 开发在执行 lpop key 时, 出现问题 , 执行语句卡住, 不能执行下去 , 需对此做一个监测 由于 ...
- HDUOJ---2082
找单词 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- python学习笔记——爬虫的抓取策略
1 深度优先算法 2 广度/宽度优先策略 3 完全二叉树遍历结果 深度优先遍历的结果:[1, 3, 5, 7, 9, 4, 12, 11, 2, 6, 14, 13, 8, 10] 广度优先遍历的结果 ...
- Python练习笔记——利用递归求年龄,第五个比第四个大2岁...
现在有五个人, 第五个人比第四个人大两岁,18 第四个人比第三个人大两岁,16 第三个人比第二个人大两岁,14 第二个人比第一个人大两岁,12 第一个人现10岁, 10 ...
- AME_AME审批中子元素的概念和用途(概念)
2014-05-30 Created By BaoXinjian AME: Oracle Approvals Management AME的6个元素的概念和主要作用: Attribue -> ...
- Form_如何通过标准功能查找数据源(概念)
2014-06-01 Created By BaoXinjian
- kafka linux 启动脚本 sample
#!/bin/sh # # chkconfig: 345 99 01 # description: Kafka # # File : Kafka # # Description: Starts and ...
- linux centos7 常用命令【systemctl替换service】
虽然linux的命令很多都是相同的,但是新版的centos 7 上面与以前的有些命令还是有所不同,不过还好,有提示.所以就在百度上面搜索了以下,作为记载,以后方便查看: centos7 上面启动服务以 ...