打卡信奥刷题(483)用Scratch图形化工具信奥P7919[普及组/提高组] [Kubic] ABC

[Kubic] ABC

题目背景

建议先看 D 题题目背景。

题目描述

给定一个长度为 n n n 的只包含 A,B,C \texttt{A,B,C} A,B,C 的字符串 S S S,你可以进行若干次操作,每次操作为:

  • 先选择一个区间 [ l , r ] [l,r] [l,r],你需要保证 1 ≤ l ≤ r ≤ n 1\le l\le r\le n 1lrn

  • 再选择三个字符 p A , p B , p C ∈ { A,B,C } pA,pB,pC\in\{\texttt{A,B,C}\} pA,pB,pC{A,B,C},并将 S l … r S_{l\dots r} Slr 中所有 A \texttt{A} A 变为 p A pA pA,所有 B \texttt{B} B 变为 p B pB pB,所有 C \texttt{C} C 变为 p C pC pC p A , p B , p C pA,pB,pC pA,pB,pC 可以相等

求出最少需要进行多少次操作才能使得 S S S任意相邻两个字符不同,并输出构造方案

输入格式

第一行,一个整数 n n n

第二行,一个长度为 n n n 的字符串 S S S

输出格式

第一行,一个整数 m m m,表示你所构造的方案的操作次数。

接下来 m m m 行,每行两个整数 l , r l,r l,r 和三个字符 p A , p B , p C pA,pB,pC pA,pB,pC

你需要保证 1 ≤ l ≤ r ≤ n , p A , p B , p C ∈ { A,B,C } 1\le l\le r\le n,pA,pB,pC\in\{\texttt{A,B,C}\} 1lrn,pA,pB,pC{A,B,C}

注意: p A , p B , p C pA,pB,pC pA,pB,pC 之间不需要,也不应该加空格(参考样例输出)

样例 #1

样例输入 #1

5
ABBAA

样例输出 #1

1
3 4 BAC

样例 #2

样例输入 #2

5
ABCBA

样例输出 #2

0

提示

对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 5 × 1 0 3 , S i ∈ { A,B,C } 1\le n\le 5\times 10^3,S_i\in\{\texttt{A,B,C}\} 1n5×103,Si{A,B,C}

分值 n n n特殊性质
Subtask ⁡ 1 \operatorname{Subtask}1 Subtask1 1 1 1无特殊限制 ∀ i ∈ [ 1 , n ) , S i ≠ S i + 1 \forall i\in[1,n),S_i\neq S_{i+1} i[1,n),Si=Si+1
Subtask ⁡ 2 \operatorname{Subtask}2 Subtask2 19 19 19 ≤ 10 \le 10 10
Subtask ⁡ 3 \operatorname{Subtask}3 Subtask3 10 10 10无特殊限制 S i = A S_i=\texttt{A} Si=A
Subtask ⁡ 4 \operatorname{Subtask}4 Subtask4 20 20 20无特殊限制 S i ∈ { A,B } S_i\in\{\texttt{A,B}\} Si{A,B}
Subtask ⁡ 5 \operatorname{Subtask}5 Subtask5 20 20 20 ≤ 100 \le 100 100
Subtask ⁡ 6 \operatorname{Subtask}6 Subtask6 30 30 30无特殊限制

评分方法

以下情况将会使你在该测试点获得 0 0 0 分:

  • 输出格式不满足要求。

  • 输出多余信息(包括空格和换行符)

  • 构造的方案操作次数与标准答案不同。

  • 构造的方案不符合题目要求。

  • 时间超限。

如果没有上述情况,你在该测试点获得满分。

保证 SPJ 占用不超过 100 ms ⁡ , 10 MB ⁡ 100\operatorname{ms},10\operatorname{MB} 100ms,10MB

样例解释 1

一种操作过程如下:

ABBAA

ABABA

可以证明没有更优的方案。

样例解释 2

初始序列已经符合题目要求,直接输出一行 0 0 0 即可。

Scratch实现

在这里插入图片描述

后续

接下来我会不断用scratch来实现信奥比赛中的算法题、Scratch考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值