#P15072. [ICPC 2024 Chengdu R] Arrow a Row

[ICPC 2024 Chengdu R] Arrow a Row

说明

定义一个“箭头字符串”为满足以下条件的字符串:

  • 字符串长度至少为 55
  • 字符串以 >\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 给你一个长度为 nn 的字符串 ss,仅由 >\tt{>}\tt{-} 组成。你需要通过对一个同样长度为 nn、完全由 \tt{*} 组成的字符串执行一系列绘制操作来创建 ss。在一次绘制操作中,你可以选择一个长度至少为 55 的子串,并将其转换为一个箭头字符串。你执行的操作总数不能超过 nn

如果无法在不超过 nn 次绘制操作的情况下获得字符串 ss,则输出 No\texttt{No}。否则,输出 Yes\texttt{Yes} 并提供绘制操作的详细信息。如果有多种解决方案,输出任意一种即可。

输入格式

  • 第一行包含一个整数 TT1T1041\le T\le 10^4),表示测试用例的数量。
  • 每个测试用例包含一行,为一个长度为 nn5n1055 \le n \le 10^5)的字符串 ss,仅由 >\tt{>}\tt{-} 组成。

保证所有测试用例的 nn 之和不超过 51055 \cdot 10^5

输出格式

对于每个测试用例,如果无法在不超过 nn 次绘制操作的情况下获得给定字符串,则输出一行 No\texttt{No}。否则,输出 Yes\texttt{Yes} 和一个正整数 mm1mn1 \le m \le n),表示需要执行的绘制操作次数。随后输出 mm 行,每行包含两个整数 pp1pn41\le p\le n-4)和 ll5ln+1p5\le l\le n+1-p),分别表示所选子串的起始位置和长度。

4
>>->>>
>>>->
>>>>>
>->>>>>>
Yes 2
1 5
2 5
No
No
Yes 2
2 7
1 5

提示

对于示例中的第四个测试用例,绘制过程如下所示:

:::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 完成