C. Mark and His Unfinished Essay - 思维

分析:

直接模拟操作会mle,可以每次复制记录对应源字符串的下标,可以记录每次字符串增加的长度的左右端点下标,可以发现左端点与读入的l是对应的,因此就可以向前移到l的位置,这样层层递归,就能找到在原字符串的相对位置,能够向前移动的前提是查询的下标要在每次记录的区间以内。

代码:

cpp 复制代码
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin >> T;
    while(T --) {
        int n, c, q;
        cin >> n >> c >> q;
        string s;
        cin >> s;
        s = " " + s;
        vector<ll> left(c + 1), right(c + 1), d(c + 1);
        right[0] = n;
        left[0] = 1;
        for(int i = 1; i <= c; i ++) {
            ll l, r;
            cin >> l >> r;
            left[i] = right[i - 1] + 1;
            right[i] = left[i] + r - l;
            d[i] = left[i] - l;
        }
      //  for(int i = 1; i <= c; i ++) cout << left[i] << ' ' << right[i] << ' ' << d[i] << endl;
        while(q --) {
            ll x;
            cin >> x;
            for(int i = c; i >= 1; i --) {
                if(left[i] <= x&&x <= right[i]) {
                  //  cout << left[i] << ' ' << right[i] << endl;
                  //  cout << d[i] << endl;
                    x -= d[i];
                }
            }
           // cout << x << endl;
            cout << s[x] << '\n';
        }
    }
}
相关推荐
ShineWinsu42 分钟前
爬虫对抗:ZLibrary反爬机制实战分析技术文章大纲
c++
小王不爱笑1321 小时前
G1 GC 的核心基础:Region 模型的补充细节
java·jvm·算法
小王不爱笑1322 小时前
三色标记算法
算法
charlie1145141912 小时前
通用GUI编程技术——Win32 原生编程实战(十六)——Visual Studio 资源编辑器使用指南
开发语言·c++·ide·学习·gui·visual studio·win32
小O的算法实验室2 小时前
2026年AST SCI1区TOP,基于速度障碍法的多无人机三维避障策略,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
DpHard2 小时前
现代 C++ 中 push 接口为何提供 const T& 与 T&& 两个重载
c++
U-52184F693 小时前
深入理解“隐式共享”与“写时复制”:从性能魔法到内存深坑
java·数据库·算法
pp起床3 小时前
Part02:基本概念以及基本要素
大数据·人工智能·算法
lzh200409193 小时前
红黑树详解
算法
U-52184F693 小时前
深度解析:从 Qt 的 Q_D 宏说起,C++ 工业级 SDK 是如何保证 ABI 稳定性的
数据库·c++·qt