1 solutions

  • 0
    @ 2024-12-5 18:24:53

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    struct node{
    int time,nation; //到岗时间,国籍编号 
    };
    queue<node>q; //存储有效时间范围内的乘客信息
    int cnt[100010];//统计不同国籍编号人数 
    int t,k,x; //t时间  k人数   x国籍 
    int main(){
        int n;cin>>n;  node d;  int ans=0;//有多少种不同的国籍
          for(int i=1;i<=n;i++){
               cin>>t>>k;     //先将超时的弹出 
                while(!q.empty()&&t-q.front().time>=86400){
                      d=q.front(); //队首元素
                      q.pop();
                      cnt[d.nation]--; //该国籍对应人数-1 
                  if(cnt[d.nation]==0) ans--;  //国籍种类-1 
    } 
          for(int i=1;i<=k;i++){
               cin>>x;   //读入每个国籍编号 
              d.time=t;
              d.nation=x;
              q.push(d);  //将结构体队列 d 入队 
                cnt[d.nation]++;
                if(cnt[d.nation]==1) ans++;   //如果是第一次出现该编号国籍  国籍种类+1 
             }
          cout<<ans<<endl; 
         } 
    }
    
    
    • 1

    Information

    ID
    9200
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By