码迷,mamicode.com
首页 > 其他好文 > 详细

2016普及组t3海港

时间:2017-08-16 17:14:09      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:fine   --   时间   pac   mat   logs   main   结构体   stream   

 

好的,说说这道题的思路,爆搜队列嘛:

用一个结构体队列存每个人来的时间和他的国籍,用一个vis数组存每个人来的次数,是第一次来sum便加一。

然后从前面第一个人开始扔(原谅我用这个词,因为我找不到更好的词了)下船,直到第一个人与当前这艘船相差没超过1天即可,每扔一个人便vis[此人国籍]减一,当这个人来的次数为0时,sum减一。

就这样,既不爆时间也不爆空间,完美!

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#define FOR(x,y,z) for(int x=y;x<=z;x++)
#define REP(x,y,z) for(int x=y;x>=z;x--)
#define ll long long
using namespace std;
int s,i=1,n,t,k,r,w[100001],x[300002],y[300002];
int main()
{
    cin>>n;
    while(n--)
    {
        cin>>t>>k;
        while(k--)
        {
            y[++r]=t;
            cin>>x[r];
            if(w[x[r]]==0)s++;
            w[x[r]]++;
        }
        while(t-y[i]>=86400)
        {
            w[x[i]]--;
        if(w[x[i]]==0)
            s--;
            i++;
        }
        printf("%d\n",s);
    }
}

 

2016普及组t3海港

标签:fine   --   时间   pac   mat   logs   main   结构体   stream   

原文地址:http://www.cnblogs.com/oi-forever/p/7373591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!