全wa,但自己测试都是对的,求调
查看原帖
全wa,但自己测试都是对的,求调
1155746
He_player楼主2024/6/17 10:19
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
const int SIZE = 1e5+7;
int n;
struct Node{
    char val;
    int ls, rs;
} tree[SIZE*35];
int root[SIZE];
int cnt, ins, place;
int ord[SIZE];

void update(char val, int x, int &now, int old, int l=1, int r = n){
    now= ++cnt;
    tree[now] = tree[old];
    if(l == r){
        tree[now].val = val;
        return;
    }
    int mid = (l+r)/2;
    if(x<=mid) update(val, x, tree[now].ls, tree[old].ls, l, mid);
    else update(val,x, tree[now].rs, tree[old].rs, mid+1, r);
}
char query(int x, int now, int l=1,int r = n){
    if(l == r){
        return tree[now].val;
    }
    int mid = (l+r)/2;
    if(x<=mid) return query(x, tree[now].ls, l, mid);
    else return query(x, tree[now].rs, mid+1, r);
}

int main(){
memset(ord, 0 ,sizeof(ord));
cin>>n;
int where = 0;
for(int i =1;i<=n;i++){
    char opt;
    cin>>opt;
    if(opt == 'T'){
            where++;
            ins++;
            ord[ins] = where;
            char c;
            cin>>c;
            place++;
            update(c, where, root[place],root[where - 1]);
    }else if(opt =='Q'){
        int x;
        cin>>x;
        cout<<query(x, root[place])<<endl;
    }else{
        int x;
        cin>>x;
        where = ord[ins - x];
        ins++;
        ord[ins] = where;
        root[++place] = root[where];
    }
}
return 0;
}

#感激不尽

2024/6/17 10:19
加载中...