求救!为何改变入队出队顺序会导致一些测试组re
查看原帖
求救!为何改变入队出队顺序会导致一些测试组re
1235023
Wauxing楼主2024/9/24 10:33

我的做法

#include<stdio.h>
using namespace std;
int nations[100003],xit[300005],xi[300005];
int main(){
    int n,t,k,x,kc=0,xc=0,nc=0;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d%d",&t,&k);
        while(xit[kc]<=t-86400){
            nations[xi[kc]]--;
            if(!nations[xi[kc++]]) nc--;
        }
        for(int j=0;j<k;j++){
            scanf("%d",&x);
            xit[++xc]=t;
            xi[xc]=x;
            if(!nations[x]) nc++;
            nations[x]++;
        }
        printf("%d\n",nc);
    }
}

大佬的做法

#include<iostream>
using namespace std;
int s,i,n,t,k,r,w[100001],x[300002],y[300002];

main(){
    cin>>n;
    while(n--){
        cin>>t>>k;
        while(k--){
            y[++r]=t;cin>>x[r];
            if(!w[x[r]])s++;
            w[x[r]]++;
        }
        while(t-y[i]>=86400)
            if(!--w[x[i++]])s--;
        cout<<s<<endl;
    }
}

经检测是因为两个子循环顺序不同导致的部分测试集re报错。但本人较困惑为何会出现这样的情况。

2024/9/24 10:33
加载中...