当前位置 : 主页 > 网页制作 > css >

Codeforces Round #590 (Div. 3) B2. Social Network (hard version)

来源:互联网 收集:自由互联 发布时间:2021-06-13
题目原址:https://codeforces.com/contest/1234/problem/B2 题意:总共能显示k条消息框,多了的话会被顶掉,看原题样例很容易懂。 思路:用双向队列加map即可。 AC代码: 1 #include iostream 2 #inclu

题目原址:https://codeforces.com/contest/1234/problem/B2

题意:总共能显示k条消息框,多了的话会被顶掉,看原题样例很容易懂。

思路:用双向队列加map即可。

AC代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <deque>
 6 #include <map>
 7 using namespace std;
 8 typedef long long ll;
 9 map<ll,ll>mapp;
10 deque<ll>q;
11 void sol(){
12     int n,k;
13     cin>>n>>k;
14     ll num;
15     for(int i=1;i<=n;i++){
16         cin>>num;
17         if(!mapp[num]) {
18             q.push_front(num);
19             mapp[num]++;
20         }
21         if(q.size()>k) {
22                 mapp[q.back()]=0;
23                 q.pop_back();
24         }
25     }
26     cout<<q.size()<<endl;
27     while(!q.empty()){
28         cout<<q.front()<<" ";
29         q.pop_front();
30     }
31 }
32 int main(){
33     sol();
34     return 0;
35 }

这里用的双向队列以前去主动了解过,就不会写,就很难受。

还有在这里的 map ,是用的全局变量,所以其初始值都为 0 ,全局变量是会默认初始化为 0 的。

网友评论