洛谷P2058 海港

题目:https://www.luogu.org/problem/show?pid=2058

这道题,模拟一下就好了啊orz

模拟队列的push和pop

把新的push进去,把不合条件的pop出去。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<queue>
 6 using namespace std;
 7 int n,ans,vis[100010];
 8 int k,tim,peo;
 9 
10 queue<int>num;
11 queue<int>t;
12 queue<int>nat;
13 
14 int main() {
15     scanf("%d",&n);
16     for(int i=1; i<=n; i++) {
17         scanf("%d%d",&tim,&k);
18         t.push(tim);
19         num.push(k);
20         for(int j=1; j<=k; j++) {
21             scanf("%d",&peo);
22             nat.push(peo);
23             if(vis[peo]==0) ans++;
24             vis[peo]++;
25         }
26         while(tim-86400>=t.front()) {
27             int p=num.front();
28             t.pop();
29             num.pop();
30             for(int j=1; j<=p; j++) {
31                 vis[nat.front()]--;
32                 if(vis[nat.front()]==0) ans--;
33                 nat.pop();
34             }
35         }
36         printf("%d\n",ans);
37     }
38     return 0;
39 }
戳我>_<

骗分真神奇,暴力出奇迹。

posted @ 2017-04-02 11:15  lonlyn  阅读(248)  评论(0编辑  收藏  举报