1722: 游戏
题目描述
小m最近喜欢上了一款游戏,这款游戏是一个很简单的策略游戏。
开局他的角色在地图上的一个位置,地图上有很多怪和道具,每个怪都有自己的生命值和攻击力,如果击败他就可以获得经验值,当经验值达到一定程度的时候就可以升级,升级会提升自己的生命值,另外可以自选提升攻击力或者防御力,升级之后经验值会减去升级需要的经验值。道具有4种,一个可以永久提升自己的经验,一个可以永久提升自己的防御力,一个可以永久提升自己的攻击力,一个可以永久提升自己的生命值。他获胜的条件是走到下一个门的地方。
为了简化问题,你可以把这张地图看成一个横版地图,你可以在上面向左或者向右走,如果那个位置上有道具的话,你可以捡起道具提升自己选择的能力。如果那个位置是怪的话,你可以选择把他消灭掉并获得经验值,获得的经验值为怪的攻击力的一半(下取整),如果你升级了你可以让自己的攻击力或者防御力加1。你可以消灭怪物当且仅当自己的攻击力或者防御力严格大于怪物的攻击力的时候,为了简单如果你能够打过的话视为你没有掉血。
现在你的问题是,看看是否能够达到门的位置取得游戏的胜利。
输入
第一行输入一个T代表有T组测试样例。(1<= T <= 100)
每个测试样例第一行输入n,atk,def,exp,n代表地图的大小,atk代表初始攻击力,def代表初始防御力,exp代表升级需要的经验值。(1<= n <= 1e6,0 <= atk <= 500,0 <= def <= 500,1 <= exp <= 1000)
第二行输入n个用空格隔开的整数,代表有n个地图的情况。各个数字的代表情况如下:
0:代表是空格,即什么都没有。
1:代表是有怪。
2:代表是有能力药。
3:代表是有经验值药。
4:代表玩家初始位置。
5:代表终点的位置。
第三行输入k个用空格隔开的整数,为地图上从左到右的怪或者道具的值,如果是怪的话就是怪的攻击力,如果是道具的话,就是相应的提升值。k = sum(1)+sum(2)+sum(3) sum(i)表示数字为i的数的个数。
输出
如果能够逃出,输出YES。
如果不能够逃出,输出NO。
样例输入 复制
1
10 1 1 5
4 2 2 1 1 3 1 0 1 5
1 1 2 2 11 4 5
样例输出 复制
YES