#P15036. 「chaynOI R2 T1」构造字符串

    ID: 16840 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 显示难度普及 上传者: 标签>Special JudgeO2优化构造分类讨论

「chaynOI R2 T1」构造字符串

题目描述

本题字符集 Σ={a,b,c}\Sigma = \{\text{a},\text{b},\text{c}\},即默认所有字符为 a,b,c\text{a},\text{b},\text{c} 中的一个。

flow 有一个字符串 TT 和一个初始为空的字符串 SS,其中 ∣T∣=n|T|=n,为了方便起见,保证 T1=a,T2=bT_1=\text{a},T_2=\text{b}。

flow 有两种操作:

  1. 向 SS 末尾添加一个字符 xx,需要满足 ∄1≤i≤∣S∣,Si=x\nexists 1\le i\le |S|,S_i=x。
  2. 选择一个位置 ii 满足 2≤i≤∣S∣2\le i\le |S| 且 Si≠Si−1S_i\ne S_{i-1},将 SiS_i 修改为 xx 满足 x∉{Si−1,Si}x\not\in\{S_{i-1},S_i\}(可以注意到,xx 唯一)。

请你帮助 flow 在至多 10610^6 次操作后将 SS 修改为与 TT 相同,输出任意一个合法的解均可。

数据保证有解。

输入格式

一行一个字符串 TT。

输出格式

第一行一个正整数 kk,表示你的操作次数,需要满足 1≤k≤1061\le k\le 10^6。

接下来 kk 行,每行为 1 x 或 2 i,表示操作 11 加入字符 xx 或操作 22 修改位置 ii。

abca
8
1 a
1 c
1 b
2 3
1 b
2 2
2 3
2 4

提示

样例 1 解释

SS 的变换过程为 $\text{[]}\to\text{[a]}\to\text{[ac]}\to\text{[acb]}\to\text{[aca]}\to\text{[acab]}\to\text{[abab]}\to\text{[abcb]}\to\text{[abca]}$。

数据范围

本题采用捆绑测试。

对于 100%100\% 的数据,3≤n≤2222223\le n\le222222,Ti∈ΣT_i\in \Sigma。

  • Subtask1(10pts):n≤5n\le 5。
  • Subtask2(10pts):n≤1000n\le 1000。
  • Subtask3(10pts):∀3≤i≤n\forall 3\le i\le n,Ti=cT_i=\text{c}。
  • Subtask4(20pts):n≤2×105n\le 2\times10^5。
  • Subtask5(50pts):无特殊限制。