首页 > 其他 > 详细

双向链表()

时间:2017-08-25 22:05:07      阅读:342      评论:0      收藏:0      [点我收藏+]

 题目:

技术分享

技术分享

技术分享

 

补半年前的题=_=

技术分享
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=1e5+10;
 4 
 5 map<int,int> mp;
 6 int L[maxn],R[maxn],val[maxn];
 7 int cnt=0;
 8 char ans[maxn];
 9 
10 void insert_(int id){
11     R[id]=R[0];
12     L[id]=0;
13     L[R[0]]=id;
14     R[0]=id;
15 }
16 
17 void erase_(int id){
18     R[L[id]]=R[id];
19     L[R[id]]=L[id];
20 }
21 
22 int main(){
23     int n,k;
24     while(scanf("%d%d",&n,&k)!=EOF){
25         mp.clear();
26         int x;
27         cnt=0;
28         R[0]=k+1;
29         L[k+1]=0;
30         int id;
31         for(int i=0;i<n;i++){
32             scanf("%d",&x);
33             if(mp.count(x)){
34                 ans[i]=1;
35                 id=mp[x];
36                 erase_(id);
37                 insert_(id);
38             }else{
39                 ans[i]=0;
40                 if(cnt<k){
41                     mp[x]=++cnt;
42                     val[cnt]=x;
43                     insert_(cnt);
44                 }else{
45                     id=L[k+1];
46                     mp.erase(val[id]);
47                     mp[x]=id;
48                     erase_(id);
49                     val[id]=x;
50                     insert_(id);
51                 }
52             }
53         }
54         ans[n]=\0;
55         puts(ans);
56     }
57     return 0;
58 }
View Code

 

双向链表()

原文:http://www.cnblogs.com/yijiull/p/7429786.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!