#2053. [ABC303C] Dash

[ABC303C] Dash

题目描述

现在高桥在一个二维平面上。初始时他在 (0,0)(0,0) 处,生命值为 HH。平面上有 MM 个可以恢复生命值的物品,其中第 ii 个物品的位置为 (xi,yi)(x_i,y_i)

高桥将要进行 NN 次移动,第 ii 次移动的方式如下:

  • 设高桥现在的位置是 (x,y)(x,y),那么他将会消耗 11 点生命值,同时:
    • 如果 Si=RS_i=\texttt R,移动到 (x+1,y)(x+1,y)
    • 如果 Si=LS_i=\texttt L,移动到 (x1,y)(x-1,y)
    • 如果 Si=US_i=\texttt U,移动到 (x,y+1)(x,y+1)
    • 如果 Si=DS_i=\texttt D,移动到 (x,y1)(x,y-1)
  • 如果高桥的生命值降为负数,他就会倒下无法行动;否则,如果当前位置有一个可以恢复生命值的物品,且当前生命值小于 KK,那么生命值将会恢复到 KK

请判断高桥能否进行完所有的移动而不倒下。

输入格式

第一行输入四个数 N,M,H,KN,M,H,K。第二行输入一个长度为 NN 的字符串 SS。接下来 MM 行,第 ii 行输入两个数 (xi,yi)(x_i,y_i)

输出格式

如果高桥可以进行完所有 NN 次移动,输出 Yes,否则输出 No

4 2 3 1
RUDL
-1 -1
1 0
Yes
5 2 1 5
LDRLD
0 0
-1 -1
No

数据范围与约定

1N,M,H,K2×1051\le N,M,H,K\le2\times10^5xi,yi2×105|x_i|,|y_i|\le2\times10^5

保证 SS 是一个只由字符 RLUD 构成的长度为 NN 的字符串。保证 (xi,yi)(x_i,y_i) 两两不同。保证所有输入的数均为整数。

样例 1 解释

最初,高桥的健康状况是 33 。我们将在下文中描述这些移动。

  • 11 步: SiS_i 是 "R",因此他移动到 (1,0)(1,0) 点。他的生命值降低到了 22 。虽然在 (1,0)(1,0) 点放置了一个道具,但他并没有吃掉它,因为他的生命值不低于 K=1K=1
  • 22 步: SiS_i 是 "U",因此他移动到 (1,1)(1,1) 点。他的生命值下降到了 11
  • 33 步: SiS_i 是 "D",所以他移动到了 (1,0)(1,0) 点。他的生命值降低到 00 。在 (1,0)(1,0) 点放置了一个道具,而他的生命值小于 K=1K=1 ,所以他消耗了道具,使生命值变为 11
  • 44 步: SiS_i 是 "L",所以他移动到了 (0,0)(0,0) 点。他的生命值降低到 00

因此输出 Yes

样例 2 解释

输出示例 2

最初,高桥的健康状况是 11

  • 11 步: SiS_i 是 "L",因此他移动到 (1,0)(-1,0) 点。他的健康值减少到 00
  • 22 步: SiS_i 是 "D",所以他移动到了 (1,1)(-1,-1) 点。他的健康值减少到 1-1 。现在健康值为 1-1 ,他倒下并停止移动。

因此,输出 No

请注意,虽然在他的初始点 (0,0)(0,0) 有一个物品,但他并没有在第 11 步移动之前消耗掉它,因为物品只有在移动之后才会消耗掉。