UOJ Logo 蜗牛编程训练题库

JZOJ

#227. RPG游戏

统计
时间限制:1s    空间限制:256MB    输入文件:col.in    输出文件:col.out
当前24小时内您还剩30次提交本题的机会

题目描述

小x在玩一个rpg游戏,这个游戏是回合制战斗的:也就是每次战斗分为若干个回合,每个回合,你控制的任务选择一个操作,而对方也选择一个操作。(仙剑奇侠传1就是其中的一个) 现在小x要和最后的boss对决。

小x只有n轮的机会和boss战斗,如果超过n轮boss还没有被杀死,游戏就会结束。小x最初的体力是X,boss最初的体力是B。如果某一个人的体力值小于等于0,这个人就被消灭了,游戏也会结束。

小x每一轮都会受到伤害,这个伤害值为Di,Di在每一轮都不一定相同,现在通过秘笈,小x已经知道每一轮受到的伤害。

小x每回合有三种选择:

1) 进攻。每次进攻会对boos造成x点伤害,但是本轮他会受到boos对他造成的Di伤害。但是游戏默认小x先进攻,如果boss被杀掉,游戏立即结束,boss就不会对他产生伤害。

2) 防守。这轮他不会对boss造成任何伤害,boss对他也产生不了任何伤害。

3) 疗伤。这轮他会让自己体力恢复y点,但是本轮他还会受到Di的伤害。同样,是先回复体力值,再受到伤害。并且我们认为小x的体力无上限,每次的体力恢复都会累加上去。

现在到了对决的时刻,小x想知道,至少需要多少回合才能杀掉boss。如果根本杀不掉boss,他也想知道无论是自己挂掉还是对决到了N回合,他最多能给boss造成多少点伤害,从而为下一次对决做准备。

输入格式

第一行5个整数N,x,y,X,B。意义如题目,分别表示游戏有N轮,每次小x会对boss造成x点伤害,每次回复体力能回复y点,小x最初体力值是X,boss最初体力值是B。

接下来N行,每行一个整数Di,表示第i回合,小x受到的伤害为Di。

输出格式

如果能够杀掉boss,在第一行输出 "YES",在第二行输出一个整数 K,表示至少可以在 第 K 回合完成任务。

否则在第一行输出 "NO",在第二行输出一个整数 T,表示最多可以给boss造成T点伤害。

样例数据

input

4 1 1 3 3
1
10
1
10

output

YES
4

数据规模与约定

对于 50% 的数据,N≤1000。 对于 100% 的数据,1≤N≤10^5,1≤x, y≤10^4,1≤X,B≤10^9。

每回合受到的伤害 Di 满足1≤Di≤10^4。

时间限制:$1 \text {s}$

空间限制:$256 \text {MB}$

解题讨论区

标题 发表者 发表日期