#include<bits/stdc++.h>usingnamespace std;constint N =1e5+5, T =86400;int cnt[N], t[N];int n, res;inlinevoidadd(int x){
res +=(++cnt[x]==1);}inlinevoiddel(int x){
res -=(--cnt[x]==0);}
vector<int> a[N];intmain(){
cin >> n;int l =1;for(int r =1; r <= n;++r){int k, x;
cin >> t[r]>> k;while(k--){
cin >> x;add(x);
a[r].push_back(x);}while(t[r]- T >= t[l]){for(int i =0; i < a[l].size();++i){del(a[l][i]);}++l;}
cout << res <<'\n';}return0;}
文章目录题目信息解题思路代码实现题目信息题目传送门解题思路用队列存储时间。用cnt数组存储每个国籍有多少人。每次输入时判断:若没有这个国籍的人,就新建一个国籍。如果第一个人到达的时间比当前时间晚,就跳到下一个人。把这个人删掉。如果这个人是他的国籍的唯一一个人,则删除这个国籍。重复前两部操作,直到第一个人到达的时间小于等于当前时间。代码实现#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 5