首页 > ACM题库 > HDU-杭电 > hdu 2891 addHP待解决[解题报告]C++
2014
02-17

hdu 2891 addHP待解决[解题报告]C++

addHP

问题描述 :

最近小白迷上了剑侠情缘,可惜不幸的是他千挑万选拜入了一个叫做“万花”的门派。事实上,这个门派的主要作用就是在别人受到伤害的时候,施展技能使得好友的生命值得以恢复。
可是万花的技能有一个缺陷,那就是玩家所谓的读条。
读条就是一个技能的施法时间,也就是说当我按下一个技能的操作之后,这个技能会在S秒之后才会被释放出来。
万花拥有数个加血技能,它们的施法时间和加血量也不尽相同。现在小白和大家一起去下副本,责任当然是负责照顾好MT(Main Tank)。根据小白多年来的经验,可以推算出BOSS每一次攻击对MT造成的伤害,小白希望你帮忙算一下MT是否能够存活下来,如果可以,那么怎么加血,才能使得MT的最低血量最高?(MT的血量一旦太低,会导致大家的惊恐,所以小白希望知道怎么加血才能让MT曾经被打击造成的血量最低值尽可能高一些)。

输入:

第一行输入三个数字 n和m,HP,n 代表BOSS的攻击次数,m代表万花的加血技能有多少个,HP代表MT初始状态下有多少血(此时HP为MT的上限)。
接下去n个数字,第i个数字代表BOSS在第i秒对MT造成多少伤害。
接下去m行数字,每行输入一个time和一个add;
Time代表技能如果在k时间开始读条,那么会在k + time时间完成效果
Add代表该技能可以恢复多少HP,但不允许超过MT的上限。

由于我们会偷袭BOSS,所以可以看做从0时间开始加血,而BOSS的伤害从1时间点才开始计算,但是BOSS得伤害会在加血技能之前被计算。

0 <= n ,m<= 10000 ,0 <= HP, time , add <=1000 ,

输出:

第一行输入三个数字 n和m,HP,n 代表BOSS的攻击次数,m代表万花的加血技能有多少个,HP代表MT初始状态下有多少血(此时HP为MT的上限)。
接下去n个数字,第i个数字代表BOSS在第i秒对MT造成多少伤害。
接下去m行数字,每行输入一个time和一个add;
Time代表技能如果在k时间开始读条,那么会在k + time时间完成效果
Add代表该技能可以恢复多少HP,但不允许超过MT的上限。

由于我们会偷袭BOSS,所以可以看做从0时间开始加血,而BOSS的伤害从1时间点才开始计算,但是BOSS得伤害会在加血技能之前被计算。

0 <= n ,m<= 10000 ,0 <= HP, time , add <=1000 ,

样例输入:

10 2 100
1 1 1 1 1 1 1 1 1 1
2 10
1 1

样例输出:

99


  1. 样例输出和程序输出不吻合,修改一下样例输出吧。我用的是VC编译器,会提示我的i和j变量重复定义