news 2026/4/15 16:32:55

「chaynOI R2 T1」构造字符串题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
「chaynOI R2 T1」构造字符串题解

P15036 「chaynOI R2 T1」构造字符串

题目描述

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

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

flow 有两种操作:

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

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

数据保证有解。

输入格式

一行一个字符串T TT

输出格式

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

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

输入输出样例 #1

输入 #1

abca

输出 #1

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

说明/提示

样例 1 解释

S SS的变换过程为[] → [a] → [ac] → [acb] → [aca] → [acab] → [abab] → [abcb] → [abca] \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]}[][a][ac][acb][aca][acab][abab][abcb][abca]

数据范围

本题采用捆绑测试。

对于100 % 100\%100%的数据,3 ≤ n ≤ 222222 3\le n\le2222223n222222T i ∈ Σ T_i\in \SigmaTiΣ

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

思路

直接暴力构造,倒序实现。

代码见下

#include<bits/stdc++.h>usingnamespacestd;string str;chars[1000006],t[1000006];structone{longlonga;charx;longlongi;}a[1000006];longlongn,k;intmain(){cin>>str;for(inti=0;i<str.size();i++){t[++n]=str[i];}s[1]=t[1];s[2]=t[2];a[++k]={1,'a',0};a[++k]={1,'b',0};for(inti=3;i<=n;i++){a[++k]={1,'c',0};a[++k]={2,' ',i};if(i%2==1){s[i]='a';}else{s[i]='b';}}for(inti=n;i>=1;i--){if(s[i]!=t[i]){if(s[i]=='a'){if(t[i]=='b'){a[++k]={2,' ',i-1};a[++k]={2,' ',i};s[i-1]='c';}else{a[++k]={2,' ',i};}}elseif(s[i]=='b'){if(t[i]=='a'){a[++k]={2,' ',i-1};a[++k]={2,' ',i};s[i-1]='c';}else{a[++k]={2,' ',i};}}else{if(t[i]=='a'){if(s[i-1]=='b'){a[++k]={2,' ',i};}else{a[++k]={2,' ',i};a[++k]={2,' ',i-1};a[++k]={2,' ',i};s[i-1]='c';}}else{if(s[i-1]=='a'){a[++k]={2,' ',i};}else{a[++k]={2,' ',i};a[++k]={2,' ',i-1};a[++k]={2,' ',i};s[i-1]='c';}}}}}if(k<=1000000){cout<<k<<endl;for(inti=1;i<=k;i++){if(a[i].a==1){cout<<a[i].a<<" "<<a[i].x<<'\n';}else{cout<<a[i].a<<" "<<a[i].i<<'\n';}}}else{k=0;n=0;for(inti=0;i<str.size();i++){t[++n]=str[i];}s[1]=t[1];s[2]=t[2];a[++k]={1,'a',0};a[++k]={1,'b',0};for(inti=3;i<=n;i++){a[++k]={1,'c',0};a[++k]={2,' ',i};if(i%2==1){s[i]='a';}else{s[i]='b';}}for(inti=n;i>=1;){if(s[i]!=t[i]){if(s[i]=='a'){if(t[i]=='b'){intu=i;for(intj=i;j>=1;j--){if(s[j]==t[j]||t[j]=='c'){u=j+1;break;}}for(intj=u;j<=i;j+=2){a[++k]={2,' ',j};}for(intj=u+1;j<=i;j+=2){a[++k]={2,' ',j};}for(intj=u;j<=i;j+=2){a[++k]={2,' ',j};}a[++k]={2,' ',u-1};a[++k]={2,' ',u};a[++k]={2,' ',u-1};i=u-1;}else{a[++k]={2,' ',i};i--;}}else{if(t[i]=='a'){intu=i;for(intj=i;j>=1;j--){if(s[j]==t[j]||t[j]=='c'){u=j+1;break;}}for(intj=u;j<=i;j+=2){a[++k]={2,' ',j};}for(intj=u+1;j<=i;j+=2){a[++k]={2,' ',j};}for(intj=u;j<=i;j+=2){a[++k]={2,' ',j};}a[++k]={2,' ',u-1};a[++k]={2,' ',u};a[++k]={2,' ',u-1};i=u-1;}else{a[++k]={2,' ',i};i--;}}}else{i--;}}cout<<k<<endl;for(inti=1;i<=k;i++){if(a[i].a==1){cout<<a[i].a<<" "<<a[i].x<<'\n';}else{cout<<a[i].a<<" "<<a[i].i<<'\n';}}}return0;}```
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/25 15:49:37

提升响应速度:u8g2刷新策略深度剖析

以下是对您提供的博文内容进行 深度润色与结构重构后的技术文章 。整体遵循您的全部要求&#xff1a; ✅ 彻底去除AI痕迹&#xff0c;语言自然如资深嵌入式工程师面对面分享&#xff1b; ✅ 摒弃模板化标题与“总-分-总”结构&#xff0c;以真实开发痛点为起点&#xff0c;…

作者头像 李华
网站建设 2026/4/13 11:00:06

WAN2.2文生视频新体验:中文提示词输入,轻松创作高质量内容

WAN2.2文生视频新体验&#xff1a;中文提示词输入&#xff0c;轻松创作高质量内容 1. 为什么这次升级值得你立刻试试&#xff1f; 你有没有过这样的经历&#xff1a;想用AI生成一段短视频&#xff0c;却卡在第一步——英文提示词写得磕磕绊绊&#xff0c;反复调试“a cinemat…

作者头像 李华
网站建设 2026/4/14 4:23:17

麦橘超然步数设置建议,平衡速度与质量

麦橘超然步数设置建议&#xff0c;平衡速度与质量 在使用“麦橘超然”&#xff08;MajicFLUX&#xff09;进行AI图像生成时&#xff0c;你是否遇到过这样的困惑&#xff1a; 输入了精心打磨的提示词&#xff0c;却生成出细节模糊、结构松散的画面&#xff1f; 或者明明设备性能…

作者头像 李华
网站建设 2026/4/15 13:10:32

跨语言访谈整理助手,中英日韩自动切换识别

跨语言访谈整理助手&#xff0c;中英日韩自动切换识别 在做跨国市场调研、国际客户访谈或跨文化内容创作时&#xff0c;你是否经历过这些场景&#xff1a; 一段30分钟的日语访谈录音&#xff0c;手动听写耗时4小时&#xff0c;还常漏掉语气词和情绪变化中英混杂的会议录音里&…

作者头像 李华
网站建设 2026/4/8 7:53:38

鹰眼目标检测实战案例:YOLOv8多场景物体识别详细步骤

鹰眼目标检测实战案例&#xff1a;YOLOv8多场景物体识别详细步骤 1. 什么是“鹰眼”&#xff1f;——从概念到落地的直观理解 你有没有想过&#xff0c;如果给一台普通电脑装上一双“眼睛”&#xff0c;它能不能像人一样&#xff0c;一眼扫过去就认出照片里有几辆车、几个人、…

作者头像 李华
网站建设 2026/4/8 21:42:27

多核MCU下Keil调试JTAG链路连接策略完整指南

以下是对您提供的技术博文进行 深度润色与结构重构后的专业级技术文章 。全文已彻底去除AI生成痕迹&#xff0c;采用真实嵌入式工程师口吻写作&#xff0c;逻辑层层递进、语言精炼有力、案例具体可感&#xff0c;并融合大量一线调试经验与底层原理洞察。所有术语、寄存器地址…

作者头像 李华