atcoder#ABC303C. [ABC303C] Dash

[ABC303C] Dash

题目描述

二次元平面の点 (0,0) (0,0) に高橋君がいます。初め、高橋君の体力は H H です。また、二次元平面には M M 個の体力を回復するアイテムがあり、i i 個目のアイテムは点 (xi,yi) (x_i,y_i) に置いてあります。

高橋君は、これから N N 回の移動をします。i i 回目の移動は以下の方法で行われます。

  1. 今高橋君がいる点を (x,y) (x,y) とする。体力を 1 1 消費し、S S i i 番目の文字 Si S_i に応じて以下の点に移動する。
  • Si S_i R のとき: (x+1,y) (x+1,y)
  • Si S_i L のとき: (x1,y) (x-1,y)
  • Si S_i U のとき: (x,y+1) (x,y+1)
  • Si S_i D のとき: (x,y1) (x,y-1)
  1. 高橋君の体力が負になった場合、高橋君は倒れてしまい、移動をやめる。そうでない場合、移動した点にアイテムがあり、かつ高橋君の体力が K K 未満ならば、移動した点に置かれたアイテムを消費し、高橋君の体力が K K になる。

高橋君が一度も倒れることなく N N 回の移動を行えるか判定してください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N M M H H K K S S x1 x_1 y1 y_1 \vdots xM x_M yM y_M

输出格式

高橋君が一度も倒れることなく N N 回の移動を行える場合 Yes を、そうでない場合 No を出力せよ。

题目大意

现在高桥在一个二维平面上。初始时他在 (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

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

数据范围与约定

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) 两两不同。保证所有输入的数均为整数。

输入格式

第一行输入四个数 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

提示

制約

  • 1 N,M,H,K 2× 105 1\leq\ N,M,H,K\leq\ 2\times\ 10^5
  • S S R, L, U, D からなる長さ N N の文字列
  • xi,yi  2× 105 |x_i|,|y_i|\ \leq\ 2\times\ 10^5
  • (xi,yi) (x_i,y_i) は互いに異なる
  • S S 以外の入力は全て整数

Sample Explanation 1

初め高橋君の体力は 3 3 です。以下で移動を説明します。 - 1 1 回目の移動: Si S_i R なので点 (1,0) (1,0) に移動する。高橋君の体力は 2 2 に減る。点 (1,0) (1,0) にはアイテムが置いてあるが、高橋君の体力は K=1 K=1 以上なのでアイテムは消費されない。 - 2 2 回目の移動: Si S_i U なので点 (1,1) (1,1) に移動する。高橋君の体力は 1 1 に減る。 - 3 3 回目の移動: Si S_i D なので点 (1,0) (1,0) に移動する。高橋君の体力は 0 0 に減る。点 (1,0) (1,0) にはアイテムが置いてあり、体力は K=1 K=1 未満なのでアイテムを消費し、体力が 1 1 になる。 - 4 4 回目の移動: Si S_i L なので点 (0,0) (0,0) に移動する。高橋君の体力は 0 0 に減る。 以上より、高橋君は倒れずに 4 4 回の移動を行えるので、Yes を出力してください。体力は 0 0 になってもいいことに注意してください。

Sample Explanation 2

初め高橋君の体力は 1 1 です。以下で移動を説明します。 - 1 1 回目の移動: Si S_i L なので点 (1,0) (-1,0) に移動する。高橋君の体力は 0 0 に減る。 - 2 2 回目の移動: Si S_i D なので点 (1,1) (-1,-1) に移動する。高橋君の体力は 1 -1 に減る。体力が 1 -1 になってしまったので、高橋君は倒れてしまい、移動をやめる。 以上より、高橋君は倒れてしまうので、No を出力してください。 高橋君がはじめいる点 (0,0) (0,0) にはアイテムが置いてありますが、移動後にアイテムは消費されるので、1 1 回目の移動前にアイテムを消費しないことに注意してください。