题解:AT_past202109_j 数列の反転
解题思路:
对于 k1 操作,直接输出
对于 k2 操作,我们可以用一个字符串储存要反转的区间,然后使用 reverse 函数反转字符串,然后将原来的区间替换成字符串即可。
CODE:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,q,a[200005];
cin>>n>>q;
for(int x=1;x<=2*n;x++){
a[x]=x;//创建序列 a
}
for(int x=1;x<=q;x++){
int y,z;
cin>>y>>z;
if(y==1) cout<<a[z]<<"\n";//操作1
if(y==2){//操作2
string c;
for(int t=n-z+1;t<=n+z;t++) c+=(char)(a[t]+'0');//储存区间
reverse(c.begin(),c.end());//反转
for(int t=n-z+1,h=0;t<=n+z;t++) a[t]=c[h]-'0',h++;//替换区间
}
}
return 0;//完结撒花~
}