agc059 A - My Last ABC Problem

题意:

排列可视为映射

给定一个 A,B,C 字符串 str。每次操作选择一个子串并对其应用一个 ABC 的排列对应的映射。每次询问至少要多少次操作才能让子串 str[l..r] 中的全部字符相同

|S|1e5,q1e5

思路:

放一份完美题解

https://www.cnblogs.com/Appleblue17/p/17019258.html

const int N = 1e5 + 5;
char str[N];
int n, q, s[N];
void sol() {
    cin >> n >> q >> (str + 1);
    for(int i = 1; i <= n; i++)
        s[i] = s[i - 1] + (str[i] != str[i - 1]);
    while(q--) {
        int l, r; cin >> l >> r;
        cout << (s[r] - s[l - 1] + (str[l] == str[l - 1]) //这里不考虑会少算
            + (str[l] != str[r])) / 2 << '\n';
    }
}
posted @   Bellala  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2022-01-05 cf242 E. XOR on Segment(线段树)
2022-01-05 cf721 D. Maxim and Array(贪心)
点击右上角即可分享
微信分享提示