P2058 海港
用队列维护的一个二十四小时的滑动窗口
#include<iostream>
#include<cstring>
using namespace std;
const int N = 100010;
struct Node{
int t, c; // 时间,国家
};
int n;
int cnt[N];
Node q[N * 3];
int tt = -1, hh;
int main(){
cin >> n;
int res = 0;
while(n --){
int t, k;
cin >> t >> k;
while(hh <= tt && q[hh].t <= t - 86400){
cnt[q[hh].c] --;
if(cnt[q[hh].c] == 0) res --;
hh ++;
}
for(int i = 0; i < k; i ++){
int c;
cin >> c;
q[++ tt] = {t, c};
cnt[c] ++;
if(cnt[c] == 1) res ++;
}
cout << res << endl;
}
return 0;
}