题目:
小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客。 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况;对于第i艘到达的船,他记录了这艘船到达的时间ti (单位:秒),船上的乘客数k,以及每名乘客的国籍x1,x2,x3,x4等; 小K 统计了这N 艘船的信息,希望你帮助计算出每1艘船到达为止的24小时(86400秒)内到达的船上的乘客来自多少个国家?
本题采用结构题队列:
#include <bits/stdc++.h>
using namespace std;
struct people{
int time;
int country;
};
int a[300001];
int main()
{
int n;
scanf("%d",&n);
queue<people>p;
people tmp;
int num=0;
for(int k=0;k<n;k++)
{
int t,m;
scanf("%d %d",&t,&m);
for(int i=0;i<m;i++)
{
int y;
scanf("%d",&y);
p.push({t,y});
if(a[y]==0)
{
num++;
}
a[y]++;
}
while(t-p.front().time>=86400)
{
tmp=p.front();
p.pop();
a[tmp.country]--;
if(a[tmp.country]==0)
{
num--;
}
}
cout<<num<<endl;
}
return 0;
}