Problem Description
Polar Bear Pitching helps you crystallize your message. 
The stage could not be any cooler, and we mean literally: 
a hole cut through the ice in the frozen Baltic Sea.
2050有一项很有挑战的活动 —— Polar Bear Pitching 。
体验人跳入冰水中讲述自己的恐惧,改变以及梦想。这是没有时间限制的演讲,就看你能在冰水中呆多久!
现在,我们要依次面对 n 个冰水挑战,每个挑战你都可以选择接受或不接受。接受第 i 个挑战会让你丧失 ai点体力,因为每个挑战所处的环境不同,如果你要挑战它,在挑战它之前你的体力 x 会变成 min(x,bi),当你完成这个挑战的时候,你的体力会变成 x−ai,体力任何时候不允许小于等于 0,无论你是否接受第 i 个挑战,在这个挑战结束以后你的体力都会增加 ci。
现在我们想知道最多可以完成多少个挑战。
 
Input
第一行一个正整数 T (T≤50) 表示数据组数。
接下来 T 组数据,每组第一行两个正整数 n,c (1≤n≤1e3,1≤c≤1e9),表示挑战的数量和初始体力,接下来 n 行,每行三个非负整数 ai,bi,ci(0≤ai,bi,ci≤1e9)。
 
Output
对于每组数据输出一行一个数,表示你最多能完成几个挑战。
 
题意:给你一定的背包容量,让你求在i个活动中最多可以选择多少个; 
题解:基础的dp问题,确定子问题 在前i中 选j 的背包剩余容量, 
   划分:选择第i个从i-1推,或不选第i个从i-1推; 
注意此题的数据,int是会溢出的,要long long ; 
还有这题的背包容量是在变化的,在到下一个活动的时候,dp[i][0]都会在dp[i-1][0]上增加;

总结:1. f[a][b]=c,当b过大的时候,可以把b c换个位置填表,在返回找满足条件的最大的c,
     2.写dp问题的时候,初始话和边界条件一定要注意再注意,小心再小心!!!
    此题的f初始化为-INF,在转移过程出现负数是不合法的,
尤其注意在状态转移的过程中,状态转移方程触碰的边界是否需要初始化!!!

 #include <cstdio>
#include <cstring>
#include <iostream>
using namespace std; const int INF=0x3f3f3f3f;
const int maxn=1e3+;
long long f[maxn][maxn], a[maxn], b[maxn], c[maxn]; int main()
{
//freopen("in.txt", "r", stdin);
int T; cin>>T;
while(T--)
{
int n,s; cin>>n>>s;
for(int i=; i<=n; i++)
cin>>a[i]>>b[i]>>c[i]; memset(f, -0x3f, sizeof(f));//状态转移过程中出现负数是不合法的,且取max,故初始化为-INF
f[][]=s; //注意边界的初始化
for(int i=; i<=n; i++)
{
f[i][]=f[i-][]+c[i]; //注意边界的初始化,千万别弄丢了!!!
for(int j=; j<=n; j++)
{
long long t1=f[i-][j]+c[i]; //不选
long long t2=min(f[i-][j-], b[i])-a[i]; //选
if(t2>)
f[i][j]=max(t1, t2+c[i]);
else
f[i][j]=t1;
}
} int ans=;
for(int j=n; j>=; j--)
if(f[n][j]>){
ans=j; break;
}
cout<<ans<<endl;
}
return ;
}
 
 

HDU 6495 冰水挑战的更多相关文章

  1. 冰水挑战 HDU - 6495

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

  2. 2050编程赛 冰水挑战 HDU 6495

    题目地址:https://vjudge.net/problem/HDU-6495 思路:我们需要维护的是挑战了n个之后剩余体力值,剩余体力值越大越好dp[N(i)][N(j)],第一个维度,记录当前是 ...

  3. hdu 6495 dp

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

  4. 2050 Programming Competition (CCPC)

    Pro&Sol 链接: https://pan.baidu.com/s/17Tt3EPKEQivP2-3OHkYD2A 提取码: wbnu 复制这段内容后打开百度网盘手机App,操作更方便哦 ...

  5. HDOJ.2111 Saving HDU (贪心)

    Saving HDU 点我挑战题目 题意分析 给出来背包容量v和物品数量n,接下来n行分别给出每个商品单位体积的价值和物品总共的体积(注意是单位体积,不是每个物品).求出最多能装多少价值的物品. 典型 ...

  6. JS文档和Demo自动化生成工具 - SmartDoc发布

    曾几何时,当你码神附体,一路披荆斩棘的完成代码后,带着“一码在手,天下我有”的傲然环顾之时,却发现单元测试.API文档.Demo实例陆续向你砸来,顿时有木有一种冰水挑战后的感觉.而这时你应该:哟哟,快 ...

  7. 2050 Programming Competition

    http://2050.acmclub.cn/contests/contest_show.php?cid=3 开场白 Time Limit: 2000/1000 MS (Java/Others)    ...

  8. hdu 5676 ztr loves lucky numbers

    题目链接:hdu 5676 一开始看题还以为和数位dp相关的,后来才发现是搜索题,我手算了下,所有的super lucky number(也就是只含数字4, 7且4, 7的数量相等的数)加起来也不过几 ...

  9. hdu 3473 Minimum Sum

    传送门 之前看挑战的时候看到一道分桶法的题目,其实我不是很明白分桶法应该怎么写.看到poj后面的讨论版上写着划分树裸题,而我以前就听说过了划分树,就干脆拿来学习一下.在写这篇博客的时候,其实我还是对这 ...

随机推荐

  1. LeetCode 15 输入无序、有重复,输出排重版 3-Sum

    V1 粗暴的遍历,时间复杂度O(N³) func threeSumClosest(nums []int, target int) int { min := 0 result := 0 for i := ...

  2. 自己写的一些公共js方法

    /* 说明文件:这里用的都是es6的语法 导入导出,拿vue举个栗子,你只需要在用到的地方,按需要导入就行了,然后在mounted中直接可以拿来用 比如下面的手机****方法,在需要用到的地方impo ...

  3. selenium处理元素定位到了点击无效问题

    在WEB自动化测试过程中,经常会遇到这样的问题: 元素定位到了,但是点击无效?有人可能会问了,怎么判断元素定位到了,这个问题很好判断 1.给元素加高亮显示 self.driver.execute_sc ...

  4. Linux进程PRI与NI值

    1.PRI -> 进程的优先级,大部分系统(Linux.UCOSII)都是数字越低优先级越高,进程就优先运行 , Linux中的PRI(new) = PRI(old) + nice ,其中 , ...

  5. 关于asp.net中链接数据库的问题

    学习了asp.net 有web服务器控件和C#代码两部分 那么在做页面时候,需要用到数据库和asp.net的链接 课本上只是说明了和SQL server的链接,本文介绍如何在.net中链接 Acces ...

  6. Mac vs code 快捷键

    control  +  shift  +  L 选中所有匹配的所有单词,光标选中

  7. runTime动态给类添加属性

    #项目中需要给系统类添加属性 #需要注意的地方就是.m中   set 和 get  ,get方法中方法名和添加的属性名一致,set中可以用驼峰 #import <UIKit/UIKit.h> ...

  8. django中static的坑

    在django搭建网络平台的时候免不了要使用到static来保存静态文件, 在static文件夹里包含两个文件:css和js文件,如果使用不当就会出现很多问题 第一个坑:配置文件settings.py ...

  9. HDFS的Java客户端编写

    总结: 之前在教材上看hdfs的Java客户端编写,只有关键代码,呵呵…….闲话不说,上正文. 1. Hadoop 的Java客户端编写建议在linux系统上开发 2. 可以使用eclipse,ide ...

  10. hdu4779 组合计数+dp

    提交 题意:给了n*m的网格,然后有p个重型的防御塔,能承受1次攻击,q个轻型防御塔不能接受任何攻击,然后每个防御搭会攻击他所在的行和所在的列,最后求在这个网格上放至少一个防御塔的方案数, 我们枚举 ...