路径
题号:NC274785
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

这回,伊娜小姐很快地缩回她的城堡,小鹿蹦跶得越发欢快。

“那如果是个外国女孩子,是不是要叫 Enucai 呀。”她听上去心情不错,一边挥动着画笔一边与我聊天。但我决定使个坏。

“不是哦,叫 Little09。”

“Little09 是谁?”

“是另一个女孩”我假装注视着窗外。“她满含善意,努力而宽容,非常可爱,总是想把快乐带给别人,所有人都喜欢她。”


给定在一个二维平面上的 n 个点,第 i 个点的坐标表示为一个二元有序整数对 (x_i,y_i)

你还有一个长度为 m 的字符串 s,由字符 \text{L}\text{R}\text{U}\text{D} 构成。

你需要找到一个长度为 m+1 的序列 p_1,\dots,p_{m+1},满足 \forall 1\le i\le m,都有第 p_{i+1} 个点在第 p_i 个点的正 s_i 方向,即:
  • 若 s_i 为 \text{L},则 x_{p_i}>x_{p_{i+1}} 且 y_{p_i}=y_{p_{i+1}}
  • 若 s_i 为 \text{R},则 x_{p_i}<x_{p_{i+1}} 且 y_{p_i}=y_{p_{i+1}}
  • 若 s_i 为 \text{U},则 x_{p_i}=x_{p_{i+1}} 且 y_{p_i}<y_{p_{i+1}}
  • 若 s_i 为 \text{D},则 x_{p_i}=x_{p_{i+1}} 且 y_{p_i}>y_{p_{i+1}}

你需要判断是否存在至少一个合法的序列 p

输入描述:

本题包含多组测试数据。
第一行一个整数 T,表示数据组数。
对于每组测试数据,第一行两个整数 n,m,表示二维平面上的点数与字符串长度。
第二行一个长度为 m 的字符串 s,表示每一步的方向。
接下来 n 行每行两个整数 x_i,y_i,表示平面上的一个点 (x_i,y_i)

数据保证:1\le T\le 2\times 10^31\le n,m,\sum n,\sum m\le 2\times 10^30\le x_i,y_i\le 10^9,平面上点的坐标两两不同。\sum n,\sum m 表示所有测试数据中 n,m 的和。

输出描述:

输出共 T 行。

对于每组测试数据,输出一行一个字符串 YES 或 NO,表示是否存在至少一个合法的序列 p
示例1

输入

复制
2
6 5
RRLUR
0 0
1 0
3 0
1 1
0 2
2 2
2 1
U
1 1
2 1

输出

复制
YES
NO

说明

对于第一组测试数据,\{1,2,3,1,5,6\} 是一组合法的解。

对于第二组测试数据,不存在合法的解。