用动态数组也行,但有点麻烦 ......
我建议用队列
本蒟蒻的AC代码
```
#include<iostream>
#include<cstdio>
using namespace std;
int T[100005],a[300005],queue[300005]; //T数组是桶
int main(){
int n,t,k,c=0,l=0,r=0; //l是头,r是尾,c是统计乘客中有几种不同的国籍
cin>>n;
for(int i=1;i<=n;i++){
cin>>t>>k;
for(int j=1;j<=k;j++){
queue[++r]=t; //用队列储存时间
cin>>a[r];
if(T[a[r]]++==0) //如果桶数组的这一位是0,说明之前没有这种国籍的乘客
c++; //计数器加加
}
while(t-queue[l]>=86400){ //如果这一位和第一艘船的时间差比86400秒大
if(--T[a[l++]]==0){ //跳到下一个人,如果这个人是一个国籍的唯一一个人
c--; //暂且不再有这个国籍
}
}
cout<<c<<endl;
}
return 0;
}
```
写的贼详细,你可以参考参考
by Cheng_ZH0086 @ 2023-08-03 09:34:19
@[Cheng_ZH0086](/user/666738)
按你方法为啥把头文件改成万能头文件编译不了
by I_am_a_rookie_O @ 2023-08-10 20:40:47
@[DU654321](/user/1042321)
我也没写万能头呀?
by Cheng_ZH0086 @ 2023-08-10 21:34:28
@[I_am_a_rookie_O](/user/1042321) 因为如果使用万能头的话,头文件queue中的队列queue会和数组名重复。
by xiaoshumiao @ 2023-09-02 21:44:59