专栏文章
P2058题解
P2058题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @miqlwxn3
- 此快照首次捕获于
- 2025/12/04 06:57 3 个月前
- 此快照最后确认于
- 2025/12/04 06:57 3 个月前
思路
以下记 为在一天内国籍 有抵达的人数, 为一天内抵达的人的国籍数。
每一艘船上的每一个人到达时,若当前到达的是国籍 的乘客,且 ,那么就将 ,且 ,接着,让这个人的国籍以及到达时间入队,并把队尾指针 。
然后,把在一天之前到达的人弹出队列。如果当前的人国籍为 且在一天之前到达(即当前时间减去到达时间大于等于 ),那么 。如果此时 ,那么 。然后队头 再处理下一个人。
solution
CPP#include<bits/stdc++.h>
#define ll long long
const int N = 5e5+5;
using namespace std;
ll n,t,k,x,l,r;
ll a[N],f[N],tme[N];
ll num;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>t>>k;
while(k--){
tme[++r]=t;
cin>>a[r];
if(!f[a[r]])num++;
f[a[r]]++;
}
while(t-tme[l]>=86400){
if(!--f[a[l++]])num--;
}
cout<<num<<"\n";
}
return 0;
}
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...