B.Classical String Problem - 2020牛客暑期多校訓練營(第三場) - 思維
阿新 • • 發佈:2020-07-19
B.Classical String Problem
題目下載
B_Classical_String_Problem.htm.zip
題解
如果將字串S看作是首尾相接的一個環,那麼M操作實際上只是不會對環造成任何影響,只是將環破成鏈之後的首字母的位置改變了。
例如
對White做\(M \ 2\)
看作環,馬上就可以想到取模操作
只需要維護一個當前首字母的指標\(ptr\)即可
這題用cin,cout會T,儘量用scanf和printf(能過當我沒說,反正我T了)
#include <cstdio> #include <cstring> #define MaxN 2000000+1 using namespace std; char str[MaxN]; int main(){ scanf("%s",str); int n = strlen(str); int q,x; int ptr = 0; scanf("%d",&q); char cmd; while (q--) { getchar(); scanf("%c %d",&cmd,&x); if(cmd == 'M'){ ptr = (ptr + x + n) % n; }else{ x = (x - 1 + ptr) % n; putchar(str[x]); putchar('\n'); } } return 0; }