2016普及组t3海港

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016普及组t3海港相关的知识,希望对你有一定的参考价值。

 

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

用一个结构体队列存每个人来的时间和他的国籍,用一个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海港的主要内容,如果未能解决你的问题,请参考以下文章

NOIP2016普及组复赛解题报告

2018.10.2浪在ACM 集训队第二次测试赛

noip2008普及组t3传球游戏

2017 普及组复赛T3 棋盘

纪中23日c组T3 2161. 2017.7.11普及围攻

NOIP2011 普及组 T3 洛谷P1309 瑞士轮