其他分享
首页 > 其他分享> > 【数据结构1-1】线性表 [NOIP2016 普及组] 海港

【数据结构1-1】线性表 [NOIP2016 普及组] 海港

作者:互联网

题解

因为要统计近24小时之间的数据,我们没有办法对当前的数据操作从而达到统计未来24h之内的国籍,但是我们可以通过队列暂时存储该数据,等到24h后再处理当前的数据。也即,队列中一直存储近24h的数据,我们用这个队列“筛子”去从前往后筛不同的24h从而得到每24h的结果。

AC代码

#include<bits/stdc++.h>
using namespace std;

int flag[100010]={0};

struct Node{
    Node(int a,int b):t(a),x(b){};
    Node(){};
    int t,x;
}now;
queue<Node> q;
queue<int> ans;

int main(){
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int n,k,t,x;
    int cnt=0;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>t>>k;
        while(!q.empty() && q.front().t+86400<=t){
            now=q.front();
            flag[now.x]--;
            if(flag[now.x]==0)
                cnt--;
            q.pop();
        }
        for(int j=0;j<k;j++){
            cin>>x;
            flag[x]++;
            q.push(Node(t,x));
            if(flag[x]==1){
                cnt++;
            }
        }
        ans.push(cnt); 
    }
    while(!ans.empty()){
        cout<<ans.front()<<endl;
        ans.pop();
    }
    return 0;
}

标签:Node,NOIP2016,cnt,线性表,int,24h,flag,ans,数据结构
来源: https://www.cnblogs.com/Diffelentor/p/15526130.html