P9804 [POI 2022/2023 R1] kol

题目背景

题目译自 [POI2022~2023R1 kol](https://sio2.mimuw.edu.pl/c/oi30-1/p/kol/)。 注意:原题时限为 32s,为避免卡评测,此题时限改为 3s。

题目描述

你在一个 $m \times m$ 的棋盘上玩贪吃蛇游戏,已知原本蛇长度为 $1$,内容为 `0`,在 $(1,1)$ 处,棋盘上存在 $p$ 个“食物点”,当一条蛇吃了一个“食物点”时,它将会在其头部增加一个食物点对应数值的部分,下图可以更清楚的演示吃食物的过程(红色数字为蛇身): ![](https://cdn.luogu.com.cn/upload/image_hosting/8t9pu2br.png) 现在你进行了 $n$ 个操作,存在移动操作(上下左右)和查询操作(询问一个点是否被蛇覆盖),请编写一个程序求出它。

输入格式

第一行三个整数 $m$,$p$,$n \ (1 \leq m \leq 2000$,$1 \leq p \leq \min(m^2 - 1, 10^6)$,$1 \leq n \leq 10^6)$。 接下来 $p$ 行,每行三个整数 $w_i$,$k_i$,$c_i \ (1 \leq w_i,k_i \leq m$,$0 \leq c_i \leq m^2-1)$,表示坐标 $(w_i,k_i)$ 的点是一个存在食物为 $c_i$ 的食物点。 然后 $n$ 行,每行先是一个字符。 - 如果该字符为 `Z`,则紧接着后面两个左边 $w_j',k_j'$,表示询问 $(w_j',k_j')$ 的地方是否存在蛇身,不存在输出 $-1$,存在输出对应的内容(数值)。 - 否则,按照对应顺序移动:上(`G`)、下(`D`)、左(`L`)或右(`P`)。

输出格式

对应字符为 `Z` 的,输出对应的输出。

说明/提示

子任务分配如下: | 子任务编号 | 特殊性质 | 分值 | | :----------: | :----------: | :----------: | | $1$ | $m \leq 300$ 且 $p,n \leq 2000$ | $20$ | | $2$ | $m \leq 800$ 且 $p,n \leq 50000$ | $20$ | | $3$ | $c_i=0$ | $20$ | | $4$ | 无附加限制 | $40$ | 本题中,子任务 $0$ 为样例。