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海港的主要内容,如果未能解决你的问题,请参考以下文章