P15072 [ICPC 2024 Chengdu R] Arrow a Row
题目描述
定义一个“箭头字符串”为满足以下条件的字符串:
- 字符串长度至少为 $5$。
- 字符串以 $\tt{>}$ 开头,以 $\tt{>}\tt{>}\tt{>}$ 结尾。
- 字符串的其余部分仅由 $\tt{-}$ 组成。
例如,$\tt{>}\tt{-}\tt{-}\tt{>}\tt{>}\tt{>}$ 和 $\tt{>}\tt{-}\tt{-}\tt{-}\tt{>}\tt{>}\tt{>}$ 是有效的箭头字符串,而 $\tt{>}\tt{-}\tt{>}\tt{>}$ 和 $\tt{>}\tt{-}\tt{>}\tt{-}\tt{>}\tt{>}\tt{>}$ 则不是。
Sauden 给你一个长度为 $n$ 的字符串 $s$,仅由 $\tt{>}$ 和 $\tt{-}$ 组成。你需要通过对一个同样长度为 $n$、完全由 $\tt{*}$ 组成的字符串执行一系列绘制操作来创建 $s$。在一次绘制操作中,你可以选择一个长度至少为 $5$ 的子串,并将其转换为一个箭头字符串。你执行的操作总数不能超过 $n$。
如果无法在不超过 $n$ 次绘制操作的情况下获得字符串 $s$,则输出 $\texttt{No}$。否则,输出 $\texttt{Yes}$ 并提供绘制操作的详细信息。如果有多种解决方案,输出任意一种即可。
输入格式
- 第一行包含一个整数 $T$($1\le T\le 10^4$),表示测试用例的数量。
- 每个测试用例包含一行,为一个长度为 $n$($5 \le n \le 10^5$)的字符串 $s$,仅由 $\tt{>}$ 和 $\tt{-}$ 组成。
保证所有测试用例的 $n$ 之和不超过 $5 \cdot 10^5$。
输出格式
对于每个测试用例,如果无法在不超过 $n$ 次绘制操作的情况下获得给定字符串,则输出一行 $\texttt{No}$。否则,输出 $\texttt{Yes}$ 和一个正整数 $m$($1 \le m \le n$),表示需要执行的绘制操作次数。随后输出 $m$ 行,每行包含两个整数 $p$($1\le p\le n-4$)和 $l$($5\le l\le n+1-p$),分别表示所选子串的起始位置和长度。
说明/提示
对于示例中的第四个测试用例,绘制过程如下所示:
:::align{center}
$\tt{*}\tt{*}\tt{*}\tt{*}\tt{*}\tt{*}\tt{*}\tt{*}$ $\rightarrow$ $\tt{*}\underline{\tt{>}\tt{-}\tt{-}\tt{-}\tt{>}\tt{>}\tt{>}}$ $\rightarrow$ $\underline{\tt{>}\tt{-}\tt{>}\tt{>}\tt{>}}\tt{>}\tt{>}\tt{>}$
:::
翻译由 DeepSeek V3 完成