T两个点,但好像复杂度没问题。。。
查看原帖
T两个点,但好像复杂度没问题。。。
566243
zzx12345678楼主2023/8/19 20:27
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#define N 500005
#define ll long long
using namespace std;
ll n,m,u,v,w,ans,cnt;
ll b[N],c[N],d[N];
//b数组记录k,c数组记录b,d[i]记录有几条线k是i
int main(){
   cin>>n;
   for(int i=1;i<=n;i++){
   	scanf("%lld%lld%lld",&w,&u,&v);
       if(u<0)u+=2e5;
       if(w==1){
         b[++cnt]=u;c[cnt]=v;
         d[u]++;
       }
       if(w==2){
         printf("%lld\n",cnt-d[u]);
       }
       if(w==3){
         int l=cnt;
         cnt=0;
         for(int j=1;j<=l;j++){
            d[b[j]]--;
            if(u==b[j]&&v!=c[j]){
  					b[++cnt]=b[j];
  					c[cnt]=c[j];
					d[u]++;
            }
         }
       }
   }
   return 0;
}
2023/8/19 20:27
加载中...