洛谷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 }
骗分真神奇,暴力出奇迹。