zoj 2972 - Hurdles of 110m
题目:110米栏,运动员能够用三种状态跑,1状态耗体力且跑得快,2状态不消耗体力,3状态恢复体力且跑得慢。
体力上限是M,且初始满体力,如今想知到最小的时间跑全然程。
分析:dp,全然背包。题目是一个物品体积可能为负数的背包,求背包就可以。
只是,由于物品体积可能是负数,所以无论哪个方向背包都有后效性,直接用二维避免后效性。
转移方程:F(i,j)= min(F(i-F1,j)+ T1,F(i-1,j)+ T2,F(i+F2,j)+T3)。
说明:(2011-09-19 01:23)。
#include <iostream>
#include <cstdlib> using namespace std; int F[ 111 ][ 111 ];
int T1[ 111 ];
int T2[ 111 ];
int T3[ 111 ];
int F1[ 111 ];
int F2[ 111 ]; int dp( int N, int M )
{
for ( int i = 0 ; i <= N ; ++ i )
for ( int j = 0 ; j <= M ; ++ j )
F[ i ][ j ] = 0xffffff; for ( int i = 0 ; i <= M ; ++ i )
F[ 0 ][ i ] = 0; for ( int i = 1 ; i <= N ; ++ i ) {
/* 第一状态 */
for ( int j = F1[ i ] ; j <= M ; ++ j )
if ( j <= M && F[ i ][ j-F1[ i ] ] > F[ i-1 ][ j ] + T1[ i ] )
F[ i ][ j-F1[ i ] ] = F[ i-1 ][ j ] + T1[ i ];
/* 第二状态 */
for ( int j = 0 ; j <= M ; ++ j )
if ( F[ i ][ j ] > F[ i-1 ][ j ] + T2[ i ] )
F[ i ][ j ] = F[ i-1 ][ j ] + T2[ i ];
/* 第三状态 */
for ( int j = 0 ; j <= M ; ++ j )
if ( F[ i ][ min(j+F2[ i ],M) ] > F[ i-1 ][ j ] + T3[ i ] )
F[ i ][ min(j+F2[ i ],M) ] = F[ i-1 ][ j ] + T3[ i ];
}
int Min = 0xffffff;
for ( int i = 0 ; i <= M ; ++ i )
if ( Min > F[ N ][ i ] )
Min = F[ N ][ i ];
return Min;
} int main()
{
int T,N,M;
while ( cin >> T )
while ( T -- ) {
cin >> N >> M;
for ( int i = 1 ; i <= N ; ++ i )
cin >> T1[ i ] >> T2[ i ] >> T3[ i ] >> F1[ i ] >> F2[ i ];
cout << dp( N, M ) << endl;
}
return 0;
}
zoj 2972 - Hurdles of 110m的更多相关文章
- ZOJ 2972 Hurdles of 110m 【DP 背包】
一共有N段过程,每段过程里可以选择 快速跑. 匀速跑 和 慢速跑 对于快速跑会消耗F1 的能量, 慢速跑会集聚F2的能量 选手一开始有M的能量,即能量上限 求通过全程的最短时间 定义DP[i][j] ...
- zju 2972 Hurdles of 110m(简单的dp)
题目 简单的dp,但是我还是参考了网上的思路,具体我没考虑到的地方见代码 #include<stdio.h> #include<iostream> #include<st ...
- TZOJ 1545 Hurdles of 110m(01背包dp)
描述 In the year 2008, the 29th Olympic Games will be held in Beijing. This will signify the prosperit ...
- 【TOJ 1545】Hurdles of 110m(动态规划)
描述 In the year 2008, the 29th Olympic Games will be held in Beijing. This will signify the prosperit ...
- ZOJ-2972-Hurdles of 110m(线性dp)
Hurdles of 110m Time Limit: 2 Seconds Memory Limit: 65536 KB In the year 2008, the 29th Olympic ...
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
- 转载:hdu 题目分类 (侵删)
转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...
- QDU_组队训练(ABEFGHKL)
A - Accurately Say "CocaCola"! In a party held by CocaCola company, several students stand ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
随机推荐
- NProxy——Mac和Linux平台下的Fiddler
Fiddler 相信大家,尤其是前端工程师们都知道. 用它的文件替换功能,将线上的静态资源文件(JS.CSS.图片)替换为本地相应的文件,来调试线上(代码都被压缩过)UI的问题.的确是一神器.(相比, ...
- Eclipse用法和技巧四:生成说明文档1
写代码经常要添加注释的,java代码的注释也可以分为两种.单行注释以“//”作为开头就可以.段落注释在第一行开头添加“/*”,在最后一行结尾添加“*/"即可.这里介绍一种添加注释的方法,其注 ...
- linux+Qt程序如何打包发布
源地址:http://zhidao.baidu.com/link?url=UTWEoXS21B4p1L5LJmYgGBMAr0dTdXfzmaGbWeltnwQLA3Uc9_K9RcDQFFIArbx ...
- Hadoop 2.x从零基础到挑战百万年薪第一季
鉴于目前大数据Hadoop 2.x被企业广泛使用,在实际的企业项目中需要更加深入的灵活运用,并且Hadoop 2.x是大数据平台处理 的框架的基石,尤其在海量数据的存储HDFS.分布式资源管理和任务调 ...
- 性能测试之LoardRunner 自动关联
1.什么是自动关联? 2.实例介绍 以下是详细介绍: 自动化关联:它是VuGen提供的自动化扫描关联处理策略,它的原理是对同一个脚本运行和录制时的服务器返回进行比较,来自动查找变化的部分,并且提示是否 ...
- readline-6.3 之arm平台交叉编译
近期须要弄个CLI命令接口程序,初步设想是须要支持历史命令翻阅,tab键命令补全这种一个东西.经查阅相关文档,深耕百度一番!(google近期不太正常) 实在恼火.发现readline果真是个好东西, ...
- UVA11069 - A Graph Problem(DP)
UVA11069 - A Graph Problem(DP) 题目链接 题目大意:给你n个点.要你找出有多少子串符合要求.首先没有连续的数字,其次不能再往里面加入不论什么的数字而不违反第一条要求. 解 ...
- linux c编程 多线程(初级)《转载》---赠人玫瑰,手有余香!
原文地址:http://blog.csdn.net/liang890319/article/details/8393120 进程简单的说就是把一段代码复制成多份,并让他们同时执行.进程间通信是为了 ...
- 深入探讨MFC消息循环和消息泵
首先,应该清楚MFC的消息循环(::GetMessage,::PeekMessage),消息泵(CWinThread::PumpMessage)和MFC的消息在窗口之间的路由是两件不同的事情.在MFC ...
- c++ :: 域操作符
c++ :: 域操作符 作用域:变量在程序中的起作用范围简单分为:全局作用域,局部作用域,语句作用域作用域优先级:范围越小优先级越高作用域运算符:"::" 如果希望在局部变量的作用 ...