题意:略
这题自己看了数据才ac的,有个细节忘了。。还是考虑不周
char s[N];
int pre[N],nxt[N];
char op[N];
int match[N];
void del(int l,int r){
pre[nxt[r]]=pre[l];
nxt[pre[l]]=nxt[r];
}
int main(){
//freopen("in.txt","r",stdin);
int n,m,p;sf("%d%d%d",&n,&m,&p);
sf("%s",s+1);
stack<int>st;
for(int i=1;i<=n;++i){
if(s[i]=='(')st.push(i);
else {
int u=st.top();st.pop();
match[u]=i;match[i]=u;
}
}
for(int i=1;i<=n;++i){
pre[i]=i-1;
nxt[i]=i+1;
}nxt[0]=1;pre[n+1]=n;
sf("%s",op+1);
rep(i,1,m){
if(op[i]=='L')p=pre[p];
else if(op[i]=='R')p=nxt[p];
else{
int tmp=p;
if(match[p]>p){
p=nxt[match[p]],del(tmp,pre[p]);
if(p==n+1)p=pre[p];//pf("%d\n ",p);//这个细节。。。
}
else {
p=nxt[p],del(match[tmp],pre[p]);
if(p==n+1)p=pre[p];//pf("%d\n ",p);
}
}
}
int i=0;
while(nxt[i]!=n+1){
pf("%c",s[nxt[i]]);i=nxt[i];
}puts("");
}
276

被折叠的 条评论
为什么被折叠?



