题目
https://ac.nowcoder.com/acm/contest/11181/C
给出一个小写字母字符串,现在有m种魔法,每种魔法可以将区间LR的字母变为新字母X,求最后字符串的最大字典序。
题解思路
两种比较容易想到的操作:
- 将操作按照X的大小从小到大排序,每次暴力区间覆盖即可,可以使用客珂朵莉树。
- 将操作按照X的大小从大到小排序,相同区间覆盖一次,之后不再覆盖,可以用并查集加速跳跃过程。
并查集代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e7 + 5;
char s[N];
struct node
{
int l, r;
char f[2];
bool operator<(const node &temp) const {
return f[0]

这篇博客介绍了如何解决一个字符串处理问题,即通过m种魔法将区间内的字母变换为新的字母,目标是得到最大字典序的字符串。提出了两种策略:一种是按魔法效果的字母顺序排序后暴力覆盖,另一种是按字母降序排序并利用并查集避免重复覆盖。并给出了具体的并查集实现代码,展示了如何在O(n)时间内完成操作。
最低0.47元/天 解锁文章

591

被折叠的 条评论
为什么被折叠?



