AT_arc170_a的题解
谨以此片题解纪念我在 ARC 比赛中通过的第一题。
AT_arc170_a 的题解
题目大意
给出两个字符串 S
和 T
以及它们的长度,同时存在一种操作:
- 将 \(s_i\) 变为
A
并将 \(s_j\) 变为B
,此处 \(1 \leq i<j \leq n\)。
让你求出在最少多少次后,字符串 S
能等于字符串 T
,如果不能达到目标,就输出 -1
。
思考过程
一看到题,就感觉是贪心,于是打了一个贪心,然后挂了。
于是把样例抄到草稿纸上,寻找规律(自我以为是图论,因为上一场第一题就是图论),什么都没有发现,发现好像就是单纯的字符串,结果就发现:
-
对于一个 \(a_i\) 或 \(a_j\),如果它需要进行操作,而没有人可以跟他进行操作,那么此情况无解。
-
对于一个 \(a_j\),如果它前面由一个需要进行操作的 \(a_i\),那么两个数匹配,否则这个数个前面的某个已经匹配好的数匹配。
-
对于一个 \(a_i\),如果它后面由一个需要进行操作的 \(a_j\),那么两个数匹配,否则这个数个后面的某个已经匹配好的数匹配。
正解
前后遍历一遍,求出所需的最小 ans
,取较小值。
Code
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!