1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
/* 20171022 2016年 普及组 第三题 海港 注意存入方式 利用容斥原理 */ #include<cstdio> #include<cstring> const int N=110000; struct node{ int t; int l; int r; }; int n,k; int b[3*N];//国籍 node a[N]; int f[N]; int main(){ scanf("%d",&n); int num=0; for(int i=1;i<=n;i++){ scanf("%d%d",&a[i].t,&k); a[i].l=num+1; for(int j=1;j<=k;j++){ ++num; scanf("%d",&b[num]); } a[i].r=num; } memset(f ,0,sizeof f); int r=1; int ans=0; for(int i=1;i<=n;i++){ for(int j=a[i].l;j<=a[i].r;j++){ f[b[j]]++; if(f[b[j]]==1) ans++; } while(a[i].t-86399>a[r].t){ for(int j=a[r].l ;j<=a[r].r;j++){ if(f[b[j]]==1) ans-- ; f[b[j]]--; } r++; } printf("%d\n",ans); } return 0; } |
转载于:https://www.cnblogs.com/Exception2017/p/10252116.html