The Last Stand

https://ac.nowcoder.com/acm/contest/303/L

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

tokitsukaze玩到了星际争霸2(StarCraftⅡ)自由之翼的最后一关战役:背水一战(The Last Stand)。
雷诺(Raynor)费劲千辛万苦终于找到了刀锋女王凯瑞甘(Kerrigan),这时候雷诺收集齐了塞尔纳加上古神器。上古神器组装后可以净化被异虫感染的人类。
刀锋女王一开始位于坐标原点,她的初始生命为h,她要进攻位于m处的人类基地。
在进攻的过程中刀锋女王会选择触发一些事件来强化自身,但是因为受到塞尔纳加上古神器的影响,这些事件发生了反转,所以不一定都会给刀锋女王带来强化。
刀锋女王在进攻的过程中会路过n个事件的触发地,其中第i个事件的触发地点为pos[i]。当触发这个事件时,会立刻将刀锋女王的生命值变为H+val[i],H为触发事件时刀锋女王的生命值,注意val[i]的值可能为正也可能为负。触发这个事件的同时,还会给刀锋女王添加一个buff。
为了简化问题,我们认为刀锋女王身上最多只能存在一个buff,也就是后来的buff会覆盖掉之前的buff效果,该buff会持续的改变刀锋女王的生命值,当刀锋女王身上存在buff时,她每往前走一个单位,她的生命值都会变为H+delta[i],H为刀锋女王往前走一个单位前的生命值,注意delta[i]可能为正值,也可能为负值。我们认为一开始刀锋女王身上不具有任何的buff效果。
刀锋女王在路过某个事件的触发地时,她可以选择触发这个事件或者跳过不触发这个事件。不过聪明的刀锋女王总是会选择最优策略,这使她到达人族基地时拥有最多的生命值。

当刀锋女王的生命值小于等于0时,她就会死亡,在保证刀锋女王必须存活的条件下。她到达人族基地时的最大生命值是多少?(假设她的生命值上限无限大的前提下)

输入描述:

第一行输入一个正整数T(1≤T≤30),表示有T组数据。

对于每组案例:

第一行输入三个正整数n,m,h(1≤n≤1000,1≤m≤10^9,1≤h≤10^9)分别表示有n个事件的触发地,刀锋女王要进攻位于m处的人族基地,刀锋女王的初始生命h。

接下来n行每行输入三个正整数pos[i],val[i],delta[i](1≤pos[i]<m ,-10^9≤val[i],delta[i]≤10^9),分别表示第i个事件的触发地为pos[i],如果刀锋女王触发该事件的话,会立刻改变她的生命val[i]点,并且会改变自身buff的状态,之后每往前走一步都会改变她的生命值delta[i]点。

输入保证这n个事件的触发地pos[i]是按照递增顺序输入的,并且pos[i]互不相同。

输出描述:

对于每组数据,请输出一行一个正整数表示刀锋女王在选择最优策略的情况下到达人族基地时自身生命的最大值。

输入例子:
4
3 5 1
1 -1 100000
2 200 -100
3 -100 2
4 10 1
1 -1 100
2 50 -10
4 -15 3
5 -20 5
4 100 1
1 -1 100
2 50 -10
4 -15 3
5 -20 5
1 1000000000 1
1 900000000 -1
输出例子:
5
34
476
1

-->

示例1

输入

4
3 5 1
1 -1 100000
2 200 -100
3 -100 2
4 10 1
1 -1 100
2 50 -10
4 -15 3
5 -20 5
4 100 1
1 -1 100
2 50 -10
4 -15 3
5 -20 5
1 1000000000 1
1 900000000 -1

输出

5
34
476
1

说明

第一组样例:

当刀锋女王走到1位置时如果选择触发事件就会立刻失去1点生命而导致死亡,所以她不能触发事件1。

之后刀锋女王走到位置2,她选择触发事件,她先获得200点生命值,所以当前生命值变为201,并且身上获得了一个每走一步生命减少100点的debuff。

刀锋女王走到位置3时由于debuff的效果生命减少100点变为101,之后她选择触发位置3上的事件,生命值先减少100点变为1,并且身上获得了一个每走一步生命值增加2的buff效果,并且该效果覆盖掉了之前的debuff。

刀锋女王从位置3走到位置4,触发一次buff效果,当前生命变为3。

刀锋女王从位置4走到位置5,再次触发buff效果,当前生命变为5。

 #include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<cstdio>
#include<vector>
typedef long long ll;
using namespace std; struct sair{
ll pos,val,delta;
}a[]; ll dp[]; int main(){ ll n,m,h;
int _;
for(cin>>_;_;_--){
cin>>n>>m>>h;
for(int i=;i<=n;i++){
cin>>a[i].pos>>a[i].val>>a[i].delta;
}
a[n+].pos=m,a[n+].val=,a[n+].delta=;
for(int i=;i<=n+;i++){
dp[i]=h;
}
for(int i=;i<=n;i++){
ll tmp=dp[i]+a[i].val;
if(tmp>){
for(int j=i+;j<=n+;j++){
tmp=dp[i]+a[i].val+(a[j].pos-a[i].pos)*a[i].delta;
dp[j]=max(dp[j],tmp);
}
}
}
cout<<dp[n+]<<endl;
} }

The Last Stand的更多相关文章

  1. uva 11174 Stand in a Line

    // uva 11174 Stand in a Line // // 题目大意: // // 村子有n个村民,有多少种方法,使村民排成一条线 // 使得没有人站在他父亲的前面. // // 解题思路: ...

  2. Linux中的两种守护进程stand alone和xinetd

    Linux中的两种守护进程stand alone和xinetd --http://www.cnblogs.com/itech/archive/2010/12/27/1914846.html#top 一 ...

  3. 数学:UVAoj 11174 Stand in a Line

    Problem J Stand in a Line Input: Standard Input Output: Standard Output All the people in the bytela ...

  4. Xtreme9.0 - Taco Stand 数学

    Taco Stand 题目连接: https://www.hackerrank.com/contests/ieeextreme-challenges/challenges/taco-stand Des ...

  5. 【linux】【进程】stand alone 与 super daemon 区别

    本文引用自  鸟哥的linux私房菜如果依据 daemon 的启动与管理方式来区分,基本上,可以将 daemon 分为可独立启动的 stand alone , 与透过一支 super daemon 来 ...

  6. Statelessness Provide credentials with the request. Each request MUST stand alone and should not be affected from previous conversation happened from same client in past.

    The server never relies on information from previous requests. Statelessness As per the REST (REpres ...

  7. [转]ORA-38500: USING CURRENT LOGFILE option not available without stand

    标签: oracle 10g 数据库 ora-38500 it 分类: IT author:skate time :2009/08/03 在dataguard启用实时恢复的时候,报如下错误: ORA- ...

  8. stand up meeting 12-3

    因为前后端在参数传递定义不清晰的原因,今天士杰和国庆采用了pair programming的方法,在一台电脑前工作了四十分钟,明确了请求questionpool,请求question,请求rank d ...

  9. stand up meeting 12-2

    今天因为各位组员组里项目原因没有集中在一起进行stand up meeting.但是士杰和天赋国庆分别对项目进度和前后端的结合进行的沟通. 针对后端部分,天赋完成了GetRankingData API ...

随机推荐

  1. HDU 2159 FATE (dp)

    FATE Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

  2. 1058 A+B in Hogwarts (20 分)

    1058 A+B in Hogwarts (20 分) If you are a fan of Harry Potter, you would know the world of magic has ...

  3. win2003 server的域用户加入本地管理员组

    很久没有搞windows的域管理,今天碰到一个问题,一直找不到解决方法,一直在网络找资料,直到刚刚才找到方法,方法如下: C:\>net localgroup administrators li ...

  4. linux下一个网卡配置多个ip【虚拟ip】

    Linux下配置网卡ip别名何谓ip别名?用windows的话说,就是为一个网卡配置多个ip.什么场合增加ip别名能派上用场?布网需要.多ip访问测试.特定软件对多ip的需要...and so on. ...

  5. Spark 分布式SQL引擎

    SparkSQL作为分布式查询引擎:两种方式 SparkSQL作为分布式查询引擎:Thrift JDBC/ODBC服务 SparkSQL作为分布式查询引擎:Thrift JDBC/ODBC服务 Spa ...

  6. 关于sencha touch在华为、红米等部分手机下hide事件失效,msgbox无法关闭的解决方案(已更新最新解决方案)

    (急着解决问题的同学可以直接跳最底部查看最终的解决方案) 问题描述 因为前段时间抢到了华为荣耀3c,所以做项目的时候就用荣耀3c测试了一下项目, 结果发现在华为的emotion ui上sencha t ...

  7. 文件系统性能测试--iozone

    iozone 一个文件系统性能评测工具,可以测试Read, write, re-read,re-write, read backwards, read strided, fread, fwrite, ...

  8. javascript 常用获取页面宽高信息 API

    在页面的构建中 常常会需要获取页面的一些宽高信息,例如实现 惰性加载图片 需要获取页面的可见区域高度 和 已滚动区域的高度,以判断图片所在位置是否可见来决定加载图片的时间, 花点时间整理了一下,获取页 ...

  9. python写个御剑

    前言: 今天师傅叫我,写个python版的御剑.然后我之前也写过 不过不怎么样,这次有新想法. 思路: 御剑:读取御剑配置文件里的所有路径,加上用户要扫描的url.进行批量检测,如果状态码为200并且 ...

  10. js中在一个函数中引用另一个函数中的函数,可以这么做

    在另一个函数中,将需要使用的函数绑定在window下 // UEditor $(function () { window.ue = UE.getEditor('editor', { // ue即可成为 ...