求助!明明我是O(n)为生么过不了?
查看原帖
求助!明明我是O(n)为生么过不了?
696431
lijunxi1楼主2023/8/21 13:05
#include<bits/stdc++.h>
using namespace std;
int zl,n,c,yc,put,xx[200005],g,bik[100005],bib[100005],b,k;
int main ( )
{
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>n;
	while(n--)
	{
		cin>>zl>>k>>b;
		if(zl==1)
		{
			c++;
			g++;
			xx[k+100001]++;
			bik[c]=k;
			bib[c]=b;//O(1)
		}
		else if(zl==2)
		{
			cout<<g-xx[k+100001]<<"\n";//O(1)
		}
		else
		{
			yc=c;
			c=0;
			for(int i=1;i<=yc;i++)
			{
				if(bik[i]==k&&bib[i]!=b)
				{
					c++;
					bib[c]=bib[i];
					bik[c]=bik[i];
				}
				else
				{
					g--;
					xx[bik[i]+100001]--;
				}
			}//这个循环最差运行N次
		}
	}
}
2023/8/21 13:05
加载中...