(一)
動態統計袋中每個數的出現個數和不同的數的個數。
當一個數出現個數從 \(0\) 加到 \(1\) 時,不同的數個數 \(+1\),從 \(1\) 減到 \(0\) 時,不同的數個數 \(-1\)。
具體看程式碼,挺好理解的。
(二)
AC 程式碼。
#include<bits/stdc++.h>
#define db double
#define pb push_back
#define fi first
#define se second
#define mkp make_pair
#define pii pair<int,int>
using namespace std;
inline int read(){
int x=0,f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-f;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
}
int ans,vis[1000010];
signed main(){
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
int T=read();
while(T--){
int op=read();
if(op==3)printf("%d\n",ans);
if(op==1){
int x=read();
if(!vis[x])ans++;
vis[x]++;
}
if(op==2){
int x=read();
vis[x]--;
if(!vis[x])ans--;
}
}
return 0;
}