题目地址: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. codewars杂记: 寻找缺失的数

    题目描述: 给出一个整数列表,找出该列表无法通过各种组合求和得到的最小的整数. 示例: solve([1,2,8,7]) = 4, because we can get 1, 2, 1+2=3. Bu ...

  2. MS SQL SERVER搜索某个表的主键所在的列名

    原文:MS SQL SERVER搜索某个表的主键所在的列名 SELECT SYSCOLUMNS.name  FROM SYSCOLUMNS,SYSOBJECTS,SYSINDEXES,SYSINDEX ...

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

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

  4. win32界面程序开发,自制一个会自动销毁的提示框

    思路:创建线程里面启动窗口,设置定时器关闭该窗口. 创建窗口几个步骤和一般窗口无异,注册.然后createwindow,之后showwinodw,然后消息循环. 在createwindow之后,获取到 ...

  5. 【Python】:用python做下百度2014笔试题

    国庆节最后一天,明天就要上班了,闲来无事做做百度2014笔试题,好久没用过C++了,索性就用python简单的写一下,体验下题目难度.题目是从[大卫David]那里copy过来的. 1.给定任意一个正 ...

  6. MySQL 其它基本操作

    索引 所谓索引,就是类似于书的目录,目的也类似,都是为了提高检索速度.ALTER TABLE <表名> ADD INDEX <索引名(列名)>;或者CREATE INDEX & ...

  7. QML Settings 小的示例

    QML 中使用 Settings 可以保存一些简单的信息,例如用户名,密码,窗口位置,大小等,没有Sqlite那么麻烦,简单易用哦~~~(环境:Qt5.8  for android ,Windows ...

  8. 获取其他进程的命令行(ReadProcessMemory其它进程的PPROCESS_PARAMETERS和PEB结构体)

    type   UNICODE_STRING = packed record     Length: Word;     MaximumLength: Word;     Buffer: PWideCh ...

  9. SYN2306A型 GPS北斗双模授时板

    SYN2306A型 GPS北斗双模授时板 北斗gps时钟北斗授时设备北斗时钟同步系统使用说明视频链接: http://www.syn029.com/h-pd-211-0_310_36_-1.html ...

  10. python正则表达式模块

    正则表达式是对字符串的最简约的规则的表述.python也有专门的正则表达式模块re. 正则表达式函数 释义 re.match() 从头开始匹配,匹配失败返回None,匹配成功可通过group(0)返回 ...