news 2026/5/1 9:15:18

「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/5/1 7:55:00

SeqGPT-560M部署教程:Docker Compose多服务编排(含Redis缓存加速)

SeqGPT-560M部署教程&#xff1a;Docker Compose多服务编排&#xff08;含Redis缓存加速&#xff09; 1. 为什么需要多服务编排&#xff1f;——从单点运行到生产就绪 你可能已经试过直接运行SeqGPT-560M的Web服务&#xff0c;输入几条文本&#xff0c;看着结果快速返回&…

作者头像 李华
网站建设 2026/5/1 8:14:23

AI绘画交互体验升级:SDXL-Turbo打破传统生成等待模式

AI绘画交互体验升级&#xff1a;SDXL-Turbo打破传统生成等待模式 1. 为什么“等图”正在成为过去式&#xff1f; 你有没有过这样的经历&#xff1a;在AI绘画工具里输入一串精心打磨的提示词&#xff0c;然后盯着进度条——3秒、5秒、8秒……最后生成一张图&#xff0c;发现构…

作者头像 李华
网站建设 2026/4/26 22:00:45

双音频分离控制:IndexTTS 2.0实现音色情感自由搭配

双音频分离控制&#xff1a;IndexTTS 2.0实现音色情感自由搭配 你有没有试过——录了一段自己温柔说话的音频&#xff0c;却想让它在视频里“生气地质问”&#xff1f;或者手头只有UP主一段欢快的打招呼录音&#xff0c;却需要他用同一声线念出沉重的旁白&#xff1f;过去&…

作者头像 李华
网站建设 2026/5/1 8:11:57

Hunyuan MT1.5-1.8B快速上手:三步完成本地化部署教程

Hunyuan MT1.5-1.8B快速上手&#xff1a;三步完成本地化部署教程 你是不是也遇到过这些情况&#xff1a;想在本地跑一个专业级翻译模型&#xff0c;但发现动辄几十GB显存要求让人望而却步&#xff1b;试了几个开源模型&#xff0c;结果要么翻译生硬、漏译专有名词&#xff0c;…

作者头像 李华
网站建设 2026/5/1 4:44:46

万物识别镜像提速秘籍,批量处理效率翻倍实操记录

万物识别镜像提速秘籍&#xff0c;批量处理效率翻倍实操记录 最近在做一批电商商品图的自动化标签标注&#xff0c;原计划用人工方式逐张识别、打标&#xff0c;预估要花3天。结果试了下「万物识别-中文-通用领域」镜像&#xff0c;配合几个小调整&#xff0c;12分钟就跑完了8…

作者头像 李华
网站建设 2026/5/1 4:45:56

如何用YOLOv13实现高精度实时检测?答案在这里

如何用YOLOv13实现高精度实时检测&#xff1f;答案在这里 在智能安防系统需要毫秒级响应、工业质检产线每分钟处理上千件产品、无人机巡检必须在高速移动中稳定识别微小缺陷的今天&#xff0c;开发者面临一个尖锐矛盾&#xff1a;既要模型足够精准&#xff0c;又要推理足够快。…

作者头像 李华