#牛客春招刷题训练营# + 链接
显然最终的字母还是原串的字母,只是重复了很多遍
维护一下原串每个字母每次操作后重复多少遍就好啦
#include <bits/stdc++.h> using namespace std; const int N = 1024; char s[N]; int c[N]; int main() { int n, q, l, r; scanf("%d%d", &n, &q); scanf("%s", s); vector<int> ve(n, 1); while (q--) { scanf("%d%d", &l, &r); int pre = 0, now = 0; for (int i = 0; i < n && pre <= r; i++) { now = pre + ve[i]; if (now < l) { pre = now; continue; } ve[i] += min(r, now) - max(pre + 1, l) + 1; pre = now; } } for (int i = 0; i < n; i++) { for (int j = 0; j < ve[i]; j++) putchar(s[i]); } return 0; }