1 条题解

  • 1
    @ 2024-1-30 20:10:17

    求点赞~~~

    样例解释:

    第一艘船在第1秒到达海港,最近24小时到达的船是第一艘船,共有4个乘客, 分别是来自国家4,1,2,2,共来自3个不同的国家;

    第二艘船在第2秒到达海港,最近24小时到达的船是第一艘船和第二艘船,共有 4 + 2 = 6个乘客,分别是来自国家4,1,2,2,2,3,共来自4个不同的国家;

    第三艘船在第10秒到达海港,最近24小时到达的船是第一艘船、第二艘船和第 三艘船,共有4+ 2+1=7个乘客,分别是来自国家4,1,2,2,2,3,3,共来自4个不同 的国家。

    #include <bits/stdc++.h>
    using namespace std;
    int n,t,k,i,r,ans;
    int country[100005],x[300005],y[300005];
    int main(){
        cin>>n;
        while(n--){
            cin>>t>>k;
            while(k--){
                y[++r]=t;//记录时间
                cin>>x[r];//当前这个人的国籍
                if(!country[x[r]]) ans++;//这个国籍没有人是,那么ans++
                country[x[r]]++;//这个国籍的人++
            }
            while(t-y[i]>=86400){//当前t同之前存储的时间比较,如果大于限度,在
                country[x[i]]--;//那么那个人所在国籍的人数--
                if(!country[x[i]]){//如果那个人走了之后它所在国家的人数为0
                    ans--;//ans--;
                }
                i++;//换到下一个人
            }
            cout<<ans<<endl;
        }
        return 0;
    }
    
    • 1

    信息

    ID
    568
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    13
    已通过
    13
    上传者