题目解析:
多次在字母后面插入字母,考虑使用链表来实现以此来节省时间
(使用数组插入的话每次花费O(n)时间)
剩下的就是一个模拟
代码
#include "bits/stdc++.h" using namespace std; #define int long long #define endl "\n" #define PII pair<int,int> #define PIII pair<int,PII> const int MOD = 1e9 + 7; const int N = 3e5; void slu() { list<char> a; int n, m; cin >> n >> m; for (int i = 0; i < n; i++) { char t; cin >> t; a.push_back(t); } for (int i = 0; i < m; i++) { int l, r; cin >> l >> r; l--; r--; auto it = a.begin(); for (int j = 0; j < n; j++, it++) { if (j >= l && j <= r) { a.insert(it, *it); } } } for (auto it: a)cout << it; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T; // cin >> T; T = 1; while (T--)slu(); }