题目地址:https://vjudge.net/problem/HDU-6495

思路:
我们需要维护的是挑战了n个之后剩余体力值,剩余体力值越大越好
dp[N(i)][N(j)],第一个维度,记录当前是第i个挑战,第二个维度记录在当前第i挑战时,对于前1~i个挑战的其中几个是否挑战的情况与之前的情况相比较记录最好的情况。
1.初始化dp[0][0] = C;
2.判断你要挑战第x个时,x-1个挑战是否完成,如果x-1个挑战都无法完成,那么x个挑战无法开始
3.W = min(剩余体力,b) - a;
4.判断W>0?
(1)如果大于零, 比较上个状态(也需要判断上个状态是否能挑战x个)和这个挑战x个的体力剩余
(2) 不大于零 , 无法挑战,记录上个挑战了x个的挑战(也需要判断上个状态是否能挑战x个)
5.对最后一个挑战的dp值进行倒叙遍历,找到第一个体力值>0,及当前下标是最大挑战次数


 #include<iostream>
#include<algorithm>
using namespace std;
#define rep(i,j,k) for(int i = (j); i <= (k); i++)
#define per(i,j,k) for(int i = (j); i >= (k); i--) typedef long long LL;
const int N = 1e3 + ;
LL dp[N][N];
LL a[N], b[N], c[N]; void init(int n ){
rep(i, , n)rep(j, , n) dp[i][j] = ;
} int main(){ ios::sync_with_stdio(false);
cin.tie(); int T;
cin >> T; rep(x, , T){ int n, C;
cin >> n >> C; init(n); rep(i, , n) cin >> a[i] >> b[i] >> c[i]; dp[][] = C;//1.初始化dp[0][0] = C; rep(i, , n){
dp[i][] = dp[i - ][] + c[i]; rep(j, , i){
if (dp[i - ][j - ] == ) continue;//2.判断你要挑战第x个时,x-1个挑战是否完成,
// 如果x-1个挑战都无法完成,那么x个挑战无法开始
LL W = min(dp[i - ][j - ], b[i]) - a[i];//3.W = min(剩余体力,b) - a;
//(dp[i - 1][j] != 0) * c[i],,如果dp值是0,则判断上个状态是不能挑战x个
// 那么0 + 0 * c
if (W > ) dp[i][j] = max(dp[i - ][j] + (dp[i - ][j] != )*c[i], W + c[i]);
else dp[i][j] = dp[i - ][j] + (dp[i - ][j] != )*c[i];
}
}
//5.对最后一个挑战的dp值进行倒叙遍历,找到第一个体力值>0,及当前下标是最大挑战次数
per(o, n, ){
if (dp[n][o]){
cout << o << endl;
break;
}
}
} return ;
}
 #include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std; typedef long long ll;
const int N = ;
ll dp[N]; /*
时隔好久了,重新回顾了一遍“背包九讲”,发现自己的理解进一步了,这里再发部一维的吧
*/
int main(){ int T;
scanf("%d",&T); while(T--){ int n;
ll t;
scanf("%d%lld",&n,&t); dp[] = t;
for(int i = ; i <= n; i++)
dp[i] = ; ll a,b,c; for(int i = ; i <= n; i++){
scanf("%lld%lld%lld",&a,&b,&c); for(int j = i; j >= ; j--){ if(dp[j - ] <= ) continue; ll tmp = min(dp[j - ],b) - a;
if(tmp > )
dp[j] = max(dp[j]+(dp[j]>)*c, tmp+c);
else
dp[j] = dp[j]+(dp[j]>)*c;
} dp[] += c;
} for(int i = n; i >= ; i--)
if(dp[i] > ){
printf("%d\n",i);
break;
} } return ;
}

2050编程赛 冰水挑战 HDU 6495的更多相关文章

  1. 冰水挑战 HDU - 6495

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6495 题解:DP!!! dp[i][j] 表示前i个挑战,接受了j个剩余的最大体力,最后输出体力大于0 ...

  2. HDU 6495 冰水挑战

    Problem Description Polar Bear Pitching helps you crystallize your message. The stage could not be a ...

  3. hdu 6495 dp

    http://acm.hdu.edu.cn/showproblem.php?pid=6495 题意 有n个挑战(1e3),假如接受,在挑战之前体力x会变成min(x,\(b[i]\)),然后会减去a[ ...

  4. 超级码力编程赛带着6万奖金和1200件T恤向你跑来了~

    炎炎夏日,总是感觉很疲劳,提不起一点精神怎么办?是时候参加一场比赛来唤醒你的激情了!阿里云超级码力在线编程大赛震撼携手全国数百所高校震撼来袭. 它来了,它来了,它带着60000现金和1200件T恤向你 ...

  5. 百度star编程赛-练习1

    ztr loves math http://acm.hdu.edu.cn/showproblem.php?pid=5675 显然:4 ^ n * (a + b) * (a -b) #include & ...

  6. 第八届acm省赛 A挑战密室(模拟)

    10406: A.挑战密室 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 29  Solved: 10 [Submit][Status][Web Bo ...

  7. Substrings 第37届ACM/ICPC 杭州赛区现场赛C题(hdu 4455)

    http://acm.hdu.edu.cn/showproblem.php?pid=4455 https://icpcarchive.ecs.baylor.edu/index.php?option=c ...

  8. ACM/ICPM2014鞍山现场赛D Galaxy (HDU 5073)

    题目链接:pid=5073">http://acm.hdu.edu.cn/showproblem.php?pid=5073 题意:给定一条线上的点,然后能够去掉当中的m个,使剩下的到重 ...

  9. 第八届河南省省赛 A.挑战密室

    挑战密室 时间限制: ms | 内存限制: KB 难度: 描述 R组织的特工Dr. Kong 为了寻找丢失的超体元素,不幸陷入WTO密室.Dr. Kong必须尽快找到解锁密码逃离,否则几分钟之后,WT ...

随机推荐

  1. SQL Server数据库碎片整理

    碎片产生   在SQL Server中,存储数据的最小单位是页,每一页所能容纳的数据为8060字节.而页的组织方式是通过B树结构  SQL Server向每个页内存储数据的最小单位是表的行(Row)  ...

  2. WPF DataGrid支持的列类型

    WPF DataGrid支持下面几种列类型: DataGridTextColumn DataGridCheckBoxColumn DataGridComboBoxColumn DataGridHype ...

  3. jquery 显示图片

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  4. c# 安装windows服务

    C# windows服务: 第一种 :通过cmd命令安装.卸载.启动和停止Windows Service(InstallUtil.exe) 步骤: 1.运行--〉cmd:打开cmd命令框 2.在命令行 ...

  5. Linux 下蓝牙bluez分析及使用 (1)

    蓝牙耳机的使用 由于Linux下蓝牙使用不及Windows下直观,致使使用时会出现一些小问题.虽然是小问题,但是由于普通的操作都具有顺序性,前面的中断了,后面的哪怕再简单,也无法继续了.正好近期工作与 ...

  6. 提示Windows Phone IP over USB Transport (IpOverUsbSvc)未运行,如何解决

    原文:提示Windows Phone IP over USB Transport (IpOverUsbSvc)未运行,如何解决 uwp项目在安装测试时提示,"引导"Device&q ...

  7. 零元学Expression Blend 4 - Chapter 11 用实例了解布局容器系列-「Border」

    原文:零元学Expression Blend 4 - Chapter 11 用实例了解布局容器系列-「Border」 将教大家以实做案例认识Blend 4 的布局容器,此章介绍的布局容器是Blend ...

  8. SynchronizationContext笔记

    SynchronizationContext 类是一个基类,可提供不带同步的自由线程上下文. 此类实现的同步模型的目的是使公共语言运行库内部的异步/同步操作能够针对不同的异步模型采取正确的行为.此模型 ...

  9. Android零碎知识之Style and Theme

    Android的styles资源文件中存在了我们在应用中定义的各种style,它们都是以style开始的元素,包含许多属性的集合.但我们一般般它们分为style和theme,那它们有什么区别呢? 一. ...

  10. 全面提价2499元起小米6发布:四曲陶瓷机身+骁龙835+变焦双摄(小米在设计上也多次获得红点最佳、iF金奖等72项工业设计大奖)

    集微网  4月19日报道 今日,小米公司在北京召开正式推出了新一代旗舰手机“小米手机6”.在试玩过真机后,第一感觉就是这款手机做工与颜值相比此前小米手机提升巨大:有四曲面玻璃或陶瓷机身.不锈钢高亮边框 ...