news 2026/7/28 23:58:01

「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/7/19 16:20:02

GLM-4V-9B图文理解效果展示:复杂场景图中人物动作+物体关系精准解析

GLM-4V-9B图文理解效果展示&#xff1a;复杂场景图中人物动作物体关系精准解析 1. 为什么这张图能“看懂”得这么准&#xff1f; 你有没有试过给AI发一张人挤人的街景照片&#xff0c;问它“穿红衣服的男人在做什么”&#xff0c;结果它只答“有几个人”&#xff1f;或者上传…

作者头像 李华
网站建设 2026/7/28 10:21:58

RexUniNLU在智能法务场景:合同审查中自动识别违约责任与赔偿条款

RexUniNLU在智能法务场景&#xff1a;合同审查中自动识别违约责任与赔偿条款 1. 为什么合同审查需要AI助手&#xff1f; 你有没有遇到过这样的情况&#xff1a;一份50页的采购合同&#xff0c;密密麻麻全是法律术语&#xff0c;光是通读一遍就要两小时&#xff1b;关键的“违…

作者头像 李华
网站建设 2026/7/18 8:23:47

Linux教程

谁适合阅读&#xff1f;本教程针对的是Linux服务器方面的知识&#xff0c;适合从事运维或后端开发的人员阅读。需要具备的知识&#xff1f;如果你熟悉操作系统方面的知识&#xff0c;相信你会很快学会 Linux。本教程将于 Linux 的发行版本 Centos 为例来为大家介绍 Linux 系统的…

作者头像 李华
网站建设 2026/7/25 23:28:13

GLM-4-9B-Chat-1M效果对比:与云端模型的安全性差异

GLM-4-9B-Chat-1M效果对比&#xff1a;与云端模型的安全性差异 1. 为什么“本地跑大模型”正在成为刚需 你有没有过这样的经历&#xff1a; 想让AI帮你分析一份50页的PDF合同&#xff0c;刚复制粘贴到网页对话框&#xff0c;系统就提示“超出上下文长度”&#xff1b; 想让它…

作者头像 李华
网站建设 2026/7/17 20:49:41

儿童故事配音怎么做?GLM-TTS情感调控实测

儿童故事配音怎么做&#xff1f;GLM-TTS情感调控实测 给小朋友讲故事&#xff0c;光有好内容还不够——声音得“活”起来&#xff1a;语调要上扬&#xff0c;停顿要有呼吸感&#xff0c;讲到小兔子时声音轻快些&#xff0c;说到大灰狼就得压低嗓音、放慢语速。可普通TTS合成的…

作者头像 李华
网站建设 2026/7/17 7:59:30

快速理解开机启动原理,测试镜像辅助实践

快速理解开机启动原理&#xff0c;测试镜像辅助实践 你是否遇到过这样的问题&#xff1a;部署好的服务每次重启服务器就自动停止&#xff1f;写好的监控脚本总在系统启动后“失联”&#xff1f;明明配置了自动运行&#xff0c;却始终看不到进程&#xff1f;这些问题背后&#…

作者头像 李华