海港
重点在于想到我们不关心每个人是第几批次,不关心同一时间同一国籍有几个人,所以可以只储存去重后的每个人的国籍和时间信息。
使用queue和map和pair,stl就是好用(
#include<iostream>
#include<cstdio>
#include<queue>
#include<map>
using namespace std;
const int N=200000;
int n,t[N];
queue<pair<int,int>>q,p;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i){
int k;scanf("%d%d",&t[i],&k);
map<int,int>m;
for(int j=1;j<=k;++j){
int x;scanf("%d",&x);
if(m[x]) continue;
m[x]=1;
q.push(make_pair(t[i],x));
}
}
map<int,int>m1;
for(int i=1;i<=n;++i){
while(p.front().first<=t[i]-86400&&!p.empty()){
if(--m1[p.front().second]==0) m1.erase(p.front().second);
p.pop();
}
while(q.front().first<=t[i]&&!q.empty()){
++m1[q.front().second];
p.push(q.front());q.pop();
}
printf("%d\n",m1.size());
}
return 0;
}
标签:选做,int,queue,简单,国籍,include,模拟
From: https://www.cnblogs.com/w-official/p/18090245