12月将举办首届西电ACM新生赛,敬请期待~~~~

问题 1059. -- 英雄联盟

1059: 英雄联盟

时间限制: 1 Sec  内存限制: 128 MB
提交: 3  解决: 1
[提交][状态][讨论版]

题目描述

亮亮很喜欢玩英雄联盟,他现在很想知道英雄各项属性之中哪个比较重要,所以需要你来帮忙解决。
英雄联盟里每个英雄都会有下面的属性:
当前生命值(Health Point),最大生命值(Health),当前法力值(Mana Point),最大法力值(Mana)
生命回复/5秒(Health Regen),法力回复/5秒(Mana Regen)
基础攻击力(Base Attack Damage),额外攻击力(Bonus Attack Damage),法术强度(Ability Power)
固定护甲穿透(Armor Penetration),百分比护甲穿透(% Armor Penetration),固定法术穿透(Magic Penetration),百分比法术穿透(% Magic Penetration),
物理吸血(也叫生命偷取)(% Lifesteal),法术吸血(% Spellvamp)
基础攻击速度(Attack Speed),额外攻击速度(% Attack Speed),冷却缩减(% Cooldown Reduction)
暴击率(% Critical Strike Chance),韧性(% Tenacity)
物理抗性(也叫护甲)(Armor),魔法抗性(Magic Resist)
射程(Attack Range),移动速度(Movement Speed)
每个英雄还有4个主动技能和1个被动技能。
这实在是太麻烦了,现在只需要解决一个简化后的模型就可以了。
简化后的模型如下:
当前生命值(1~最大生命值),最大生命值(100~10000)
基础攻击力(10~1000),物理吸血系数(0~50)%
固定护甲穿透(0~1000),百分比护甲穿透(0~100)%
物理抗性(也叫护甲)(0~1000),韧性(0~100)%
攻击的冷却时间(400~2000)ms,技能的冷却时间(5~10)s
被动技能:每次攻击后攻击力增加基础攻击力的12.5%,最多叠加4层 ,持续2秒,每次攻击刷新该时间(即2秒内不攻击则层数清零,每次攻击会将这个倒计时重置为2秒)。
主动技能:标记对方,对方将在1秒后受到2秒眩晕。
现在给你A与B的各项数据,A与B同时开始战斗(不断攻击与施法),直到任意一方死亡为止。请你求出战斗持续时间和战斗结束后双方的剩余生命值,数据保证90%的战斗在10秒内结束,所有战斗在1000秒内结束。
普通攻击伤害:
攻击者的攻击力为X,被攻击者的护甲为Y,则被攻击者受到X*100/(100+Y)的物理伤害。
护甲穿透:
在物理攻击时无视对方一定数值的护甲,先计算百分比护甲穿透,再计算固定护甲穿透,数据保证被穿透后的护甲大于-100。
例如:A有100点固定护甲穿透,50%固定护甲穿透,B有100点护甲,则A攻击B时,B的护甲为100*(1-50%)-100=-50点,受到200%的伤害。
物理吸血:
在造成物理伤害后,回复自身所造成的实际物理伤害值*物理吸血系数的生命值。
生命值:
当受到大于等于生命值的伤害时,多余的伤害将被减免,即实际受到等于当前生命值的伤害,死亡。
当吸血回复量大于已损失的生命值时,多余的回复量将被移除,即实际回复已损失的生命值,当前生命值等于最大值。
韧性:
即减免被控制的时间。若A有10%的韧性,则A可以减免10%的被控制时间,原本应被眩晕2秒,减免后实际被眩晕1.8秒。
冷却时间:
在施放技能后,在冷却时间内不能再次施放此技能。
也就是说,假设技能冷却时间为5秒,在0s施放第一次一次技能,则在5s时:若未被眩晕则可以施放第二次技能,否则在眩晕持续时间结束后施放第二次技能。
普通攻击流程:
发出攻击,经过短暂的时间(攻击动画),造成伤害,经过短暂的时间(吸血动画),回复生命。
即,这个短暂的时间不会影响行动顺序,但是如果双方同时进行攻击,那么将同时受到伤害,此时判断双方是否死亡,活下来的回复生命。
发出攻击和标记是瞬间完成的(即可以同时发出攻击和标记),之后即使被眩晕也不会打断后续的过程,除非自身死亡。
所有持续时间都是包括开始时间但不包括结束时间的。即被动技能的持续时间为[0,2),主动技能在对方韧性为0时的持续时间为[1,3)。

输入

 第一行为数据组数n。(n≤1000)

每组数据两行:
第一行10个整数,为A的每项属性,中间用空格隔开。
第二行10个整数,为B的每项属性,中间用空格隔开。
属性按顺序分别为:
当前生命值(Health Point),最大生命值(Health),基础攻击力(Base Attack Damage),物理吸血系数(% Lifesteal)(/%),固定护甲穿透(Armor Penetration),百分比护甲穿透(% Armor Penetration)(/%),物理抗性(Armor),韧性(% Tenacity)(/%),攻击的冷却时间(Attack Cooldown)(/ms),主动技能的冷却时间(Magic Cooldown)(/s)。

输出

 对于每组数据输出一行,

战斗持续时间(/s),此时A的当前生命值,此时B的当前生命值。
中间用空格隔开,四舍五入保留2位小数。

样例输入

2
162 1000 200 50 50 50 300 0 500 10
163 1000 200 50 50 50 300 0 500 10
320 1000 200 0 50 50 300 30 500 10
475 1000 200 0 50 50 300 25 500 10

样例输出

0.50 0.00 56.50
2.90 7.50 0.00

提示

来源

[提交][状态][讨论版]