P1160-队列安排【链表】
生活随笔
收集整理的這篇文章主要介紹了
P1160-队列安排【链表】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正題
評測記錄:https://www.luogu.org/recordnew/lists?uid=52918&pid=P1160
題目大意
有nn個人,編號是1~n1~n,然后開始時插入第一個人,之后每次可以插入到一個人的左邊或右邊,然后去掉mm<script type="math/tex" id="MathJax-Element-55">m</script>個人,最后輸出隊列順序。
解題思路
裸的鏈表題
插入操作:
刪除操作:
node[node[x].prev].next=node[x].next; node[node[x].next].prev=node[x].prev;code
#include<cstdio> using namespace std; struct Node{bool ok;int prev,next; }node[100011]; int n,m,x,c,begin; int main() {scanf("%d",&n);node[0].next=1;node[0].prev=1;for(int i=2;i<=n;i++){scanf("%d%d",&x,&c);if(c){node[node[x].next].prev=i;node[i].next=node[x].next;node[x].next=i;node[i].prev=x;}//插入右邊else{node[node[x].prev].next=i;node[i].prev=node[x].prev;node[x].prev=i;node[i].next=x; }//插入左邊}scanf("%d",&m);for(int i=1;i<=m;i++){scanf("%d",&x);if(!node[x].ok){node[node[x].prev].next=node[x].next;node[node[x].next].prev=node[x].prev;node[x].ok=true;}//刪除}x=0;while(node[x].next!=0){printf("%d ",node[x].next);x=node[x].next;}//輸出 }總結
以上是生活随笔為你收集整理的P1160-队列安排【链表】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马斯克:Cybertruck 具有“野兽
- 下一篇: 星闪联盟又一新品:雷柏 4K 无线 +