#P12814. [NERC 2021] Admissible Map

[NERC 2021] Admissible Map

Description

一个地图是由符号集 {U,L,D,R}\{\texttt{U}, \texttt{L}, \texttt{D}, \texttt{R}\} 中的符号组成的矩阵。

地图矩阵 aa地图图集是一个有向图,包含 nmn \cdot m 个顶点,编号为 (i,j)(i, j)1in1 \le i \le n1jm1 \le j \le m),其中 nn 是矩阵的行数,mm 是矩阵的列数。该图有 nmn \cdot m 条有向边 (i,j)(i+diai,j,j+djai,j)(i, j) \to (i + di_{a_{i, j}}, j + dj_{a_{i, j}}),其中 (diU,djU)=(1,0)(di_U, dj_U) = (-1, 0)(diL,djL)=(0,1)(di_L, dj_L) = (0, -1)(diD,djD)=(1,0)(di_D, dj_D) = (1, 0)(diR,djR)=(0,1)(di_R, dj_R) = (0, 1)。当地图图集中的所有边都指向图中的有效顶点时,该地图图集是有效的

一个可容许地图是指其地图图集有效且由一组环构成的地图。

地图 aa描述是地图所有行的拼接——即字符串 $a_{1,1} a_{1,2} \ldots a_{1, m} a_{2, 1} \ldots a_{n, m}$。

给定一个字符串 ss,你的任务是找出该字符串中有多少个子串可以构成某个可容许地图的描述。

字符串 s1s2sls_1s_2 \ldots s_l子串由一对索引 ppqq1pql1 \le p \le q \le l)定义,等于 spsp+1sqs_ps_{p+1} \ldots s_q。当两个子串的索引对 (p,q)(p, q) 不同时,即使它们表示相同的字符串,也被认为是不同的子串。

Input Format

唯一的输入行包含一个字符串 ss,由至少 1 个、最多 2000020\,000 个符号 U\texttt{U}L\texttt{L}D\texttt{D}R\texttt{R} 组成。

Output Format

输出一个整数——能够构成某个可容许地图描述的 ss 的子串数量。

RDUL
2
RDRU
0
RLRLRL
6

Hint

在第一个例子中,有两个子串可以构成可容许地图的描述——RDUL\texttt{RDUL} 作为 2×22 \times 2 的矩阵(图 1)和 DU\texttt{DU} 作为 2×12 \times 1 的矩阵(图 2)。

在第二个例子中,没有任何子串可以构成可容许地图的描述。例如,如果我们尝试将字符串 RDRU\texttt{RDRU} 视为 2×22 \times 2 的矩阵,可以发现生成的图不是一组环(图 3)。

在第三个例子中,三个子串 RL\texttt{RL}、两个子串 RLRL\texttt{RLRL} 和一个子串 RLRLRL\texttt{RLRLRL} 可以构成可容许地图,其中某些子串有多种方式。例如,子串 RLRLRL\texttt{RLRLRL} 可以表示为 3×23 \times 2 的矩阵(图 4)或 1×61 \times 6 的矩阵(图 5)。

翻译由 DeepSeek V3 完成