不知道WA在哪里了
查看原帖
不知道WA在哪里了
339299
osfly楼主2022/5/31 18:03
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1e6+10;
int n;
struct psd //president tree(?
{
	struct node
	{
		int l,r;
		int size;
		char val;
	}t[N<<5];
	int rt[N];
	int tot;
	void update(int &k,int f,char ch,int l,int r)
	{
		k=++tot;
		t[k].l=t[f].l;
		t[k].r=t[f].r;
		t[k].size=t[f].size;
		t[k].val=t[f].val;
		if(l==r)
		{
			t[k].val=ch;
			t[k].size=1;
			return ;
		}
		if(t[t[k].l].size==((l+r)>>1)-l+1) update(t[k].r,t[f].r,ch,((l+r)>>1)+1,r);
		else update(t[k].l,t[f].l,ch,l,(l+r)>>1);
		t[k].size=t[t[k].l].size+t[t[k].r].size;
	}
	char query(int k,int l,int r,int x)
	{
		if(l==r) return t[k].val;
		if(t[t[k].l].size>=x) return query(t[k].l,l,(l+r)>>1,x);
		else return query(t[k].r,((l+r)>>1)+1,r,x-t[t[k].l].size);
	}
}tree;
int ver;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		char op,ch;
		int back;
		scanf(" %c",&op);
		if(op=='T')
		{
			scanf(" %c",&ch);
			ver++;
			tree.update(tree.rt[ver],tree.rt[ver-1],ch,1,n);
		}
		else if(op=='U')
		{
			scanf("%d",&back);
			back++;
			ver++;
			tree.rt[ver]=tree.rt[ver-back-1];
		}
		else
		{
			scanf("%d",&back);
			back++;
			printf("%c\n",tree.query(tree.rt[ver],1,n,back));
		}	
	}
	return 0;
}

22分,不知道WA在哪里了

由P1383的代码里加上

back++ 而已

有什么坑点吗?

2022/5/31 18:03
加载中...