题目地址: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. 数据绑定(七)使用ObjectDataProvider对象作为Binding的Source

    原文:数据绑定(七)使用ObjectDataProvider对象作为Binding的Source ObjectDataProvider就是把对象作为数据源提供给Binding,类似的还有XmlData ...

  2. php将秒转换为 分:秒 函数

    php将秒转换为 分:秒 函数 /** * 将秒转换为 分:秒 * s int 秒数 */ function s_to_hs($s=0){ //计算分钟 //算法:将秒数除以60,然后下舍入,既得到分 ...

  3. 使用ServiceStack.Redis实现Redis数据读写

    原文:使用ServiceStack.Redis实现Redis数据读写 User.cs实体类 public class User { public string Name { get; set; } p ...

  4. PHP 实现自动加载器(Autoloader)

    我们知道PHP可以实现自动加载,避免了繁重的体力活,代码更规范,整洁.那如果我们把这个自动加载再升华一下,变成自动加载类,每次只需要引入这个类,那么其他类就自动加载了,已经开源,仓库地址在这里.同时如 ...

  5. 深入理解Amazon Alexa Skill(一)

    语音助手(Virtual Personal Assistants, VPA)是物联网智能家居中很火的一个领域,用户可以通过语言作为入口来控制家里各种各样的设备,而亚马逊的Alexa(echo,echo ...

  6. 【C】用C语言提取bmp图片像素,并进行K-means聚类分析——容易遇到的问题

    关于bmp图片的格式,网上有很多文章,具体可以参考百度百科,也有例子程序.这里只提要注意的问题. (1)结构体定义问题:首先按照百度百科介绍的定义了结构体,但是编译发现重定义BITMAPFILEHEA ...

  7. Win10《芒果TV》内测版现已支持在国行版 Xbox One 下载体验

    Win10<芒果TV>内测版现已支持在国行版 Xbox One 下载体验 关于国行为什么无法从商店下载安装芒果TV内测版(来自微软) 1.截至到目前<芒果TV - Preview&g ...

  8. 随机森林分类器(Random Forest)

    阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 袋外错误率(oob error) 6 随机森林工作原理解释的一个简单例子 7 随机森林的Pyth ...

  9. 微信小程序把玩(二十三)modal组件

    原文:微信小程序把玩(二十三)modal组件 modal弹出框常用在提示一些信息比如:退出应用,清楚缓存,修改资料提交时一些提示等等. 常用属性: wxml <!--监听button点击事件-- ...

  10. vs编译在win xp电脑上运行的win32程序遇到的问题记录(无法定位程序输入点GetTickCount64于动态链接库KERNEL32.dll)

    直接编译后运行,弹出提示框:不是有效的win32应用程序 像之前那样把msvcr110.dll复制过去依然报错: 这是因为vs2012编译的win32程序用到的系统函数在xp环境上对应不上.之前转载的 ...