2019湖南省赛 K 双向链表练习题(list)

Posted ccsu-kid

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019湖南省赛 K 双向链表练习题(list)相关的知识,希望对你有一定的参考价值。

https://ac.nowcoder.com/acm/contest/1099/K

这题大概只要会list就会做吧。。。我是真的dd

 1 #define bug(x) cout<<#x<<" is "<<x<<endl
 2 #define IO std::ios::sync_with_stdio(0)
 3 #include <bits/stdc++.h>
 4 #define iter ::iterator
 5 #define pa pair<int,ll>
 6 #define pp pair<int,pa>
 7 using namespace  std;
 8 #define ll long long
 9 #define mk make_pair
10 #define pb push_back
11 #define se second
12 #define fi first
13 #define ls o<<1
14 #define rs o<<1|1
15 ll mod=998244353;
16 const int N=2e5+5;
17 list<int>L[N],D[N];
18 int n,m;
19 int main()
20     while(~scanf("%d%d",&n,&m))
21         for(int i=1;i<=n;i++)
22             L[i].clear();
23             D[i].clear();
24             L[i].pb(i);
25             D[i].pb(i);
26         
27         vector<int>ans;
28         while(m--)
29             int x,y;
30             scanf("%d%d",&x,&y);
31             L[x].splice(L[x].end(),L[y]);
32             D[y].splice(D[y].end(),D[x]);
33             swap(L[x],D[y]);
34             swap(D[x],D[y]);
35             L[y].clear();
36             D[y].clear();
37         
38         for(auto tmp:L[1])
39             ans.pb(tmp);
40         
41         int h=ans.size();
42         printf("%d ",h);
43         for(int i=0;i<h;i++)
44             printf("%d ",ans[i]);
45         
46         printf("\n");
47     
48 

 

以上是关于2019湖南省赛 K 双向链表练习题(list)的主要内容,如果未能解决你的问题,请参考以下文章

链表+细节一行盒子

链表+细节一行盒子

链表OJ题练习2

OJ练习第60题——合并 K 个升序链表

C++基于双向链表的List

使用 scala 实现双向链表