CF2111E 学习笔记

进入正题

题意

对于每个测试样例:
给定一个长度为 \(n\) 的字符串 \(s\),和 \(q\) 个操作,对于每个操作,给定两个字符 \(x, y\),你可以做这两种操作:

  • \(s\) 中的 \(x\) 改为 \(y\)
  • 什么也不做

\(q\) 次操作后字典序最小的 \(s\)

分析

让字典序最小意味着我们需要让 \(s\) 中的 \(a\) 尽量靠前,考虑维护一个映射,表示每个字符最终会变成什么,具体实现:

  • 初始化:\(f['a'] = 'a', f['b'] = 'b', f['c'] = 'c'\)
  • 从后往前 处理每一个操作,将 \(f[x]\) 赋值为 \(\min(f[x], f[y])\)
  • \(s\) 中的每个字符 \(ch\) 替换为 \(f[ch]\)

按照这个思路模拟即可。

posted @ 2026-02-02 18:44  constexpr_ll  阅读(0)  评论(0)    收藏  举报