看似很简单的题目,第一感觉就是直接模拟了,结果TLE...然后套论坛上是look一下后,改进了一下,结果还是TLE,无奈下只好购买代码了,不过理解了就好,呵呵.直接j的顺序是从后往前 #include <iostream>#include <string.h>using namespace std;typedef struct...{ char c; int s, e;}Op;char s[80002];Op p[3001];int n, nn;int main()...{ int T, i, j, k; char c; int m; int a, b; scanf("%d",&T); while (T--) ...{ scanf("%d%d",&n,&m); scanf("%s",s); nn = 0; for (i=0; i<m; ++i) ...{ getchar(); scanf("%c",&c); if(c == 'Q') ...{ scanf("%d",&a); --a; int cnt = 0; for (j=nn-1; j>=0; --j) ...{ if(a<p[j].s || a>p[j].e) continue; if(p[j].c == 'R') ...{ a = p[j].s+p[j].e-a; } else if(p[j].c == 'S' ) ...{ ++cnt; } } c = s[a]; for (j=0; j<cnt; j++) ...{ if(c-'z' == 0) c = 'a'; else ++c; } printf("%c ", c); } else ...{ scanf("%d%d",&a,&b); p[nn].c = c, p[nn].s = a-1, p[nn++].e = b-1; } } } return 0;}