鏈表---

題目描述

一個學校里老師要將班上?N?個同學排成一列,同學被編號為 1~N,他采取如下的方法:

  1. 先將?11?號同學安排進隊列,這時隊列中只有他一個人;

  2. 2~N?號同學依次入列,編號為?i?的同學入列方式為:老師指定編號為?i?的同學站在編號為 1~(i?1)?中某位同學(即之前已經入列的同學)的左邊或右邊;

  3. 從隊列中去掉?M?個同學,其他同學位置順序不變。

在所有同學按照上述方法隊列排列完畢后,老師想知道從左到右所有同學的編號。

輸入格式

第一行一個整數?N,表示了有?N?個同學。

第 2~N?行,第?i?行包含兩個整數 k,p,其中?k?為小于?i?的正整數,p?為?0?或者?1。若?p?為?0,則表示將?i?號同學插入到?k?號同學的左邊,p?為?1?則表示插入到右邊。

第 N+1?行為一個整數?M,表示去掉的同學數目。

接下來?M?行,每行一個正整數?x,表示將?x?號同學從隊列中移去,如果 x?號同學已經不在隊列中則忽略這一條指令。

輸出格式

一行,包含最多?N?個空格隔開的整數,表示了隊列從左到右所有同學的編號。

輸入輸出樣例

輸入?

4
1 0
2 1
1 0
2
3
3

輸出

2 4 1

說明/提示

【樣例解釋】

將同學?2?插入至同學?1?左邊,此時隊列為:

2 1

將同學?3?插入至同學?2?右邊,此時隊列為:

2 3 1

將同學?4?插入至同學?1?左邊,此時隊列為:

2 3 4 1

將同學?3?從隊列中移出,此時隊列為:

2 4 1

同學?3?已經不在隊列中,忽略最后一條指令

最終隊列:

2 4 1

【數據范圍】

對于 20%?的數據,1≤N≤10。

對于 40%?的數據,1≤N≤1000。

對于 100%?的數據,1<M≤N≤105。

用結構體模擬鏈表

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int mod=1e9+7;
const int M=4e4+10;
const int N=1e5+10;
const int INF=0x3f3f3f3f;
int minn=0x3f3f3f3f;
int maxn=0xc0c0c0c0;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int n,m,k,p;
string s;
struct P{int l,r,del;
}a[N];
void solve()
{cin>>n;a[0].l=1,a[0].r=1;a[1].l=0,a[1].r=0;for(int i=2;i<=n;i++){cin>>k>>p;if(p){a[i].l=k;a[i].r=a[k].r;a[a[k].r].l=i;a[k].r=i;}else{a[i].r=k;a[i].l=a[k].l;a[a[k].l].r=i;a[k].l=i;}}cin>>m;while(m--){int x;cin>>x;a[x].del=1;}for(int i=a[0].r;i;i=a[i].r)if(!a[i].del) cout<<i<<" ";cout<<endl;
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);ll t=1;
//	cin>>t;while(t--){	solve();}return 0;
}

用list

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int mod=1e9+7;
const int M=4e4+10;
const int N=1e5+10;
const int INF=0x3f3f3f3f;
int minn=0x3f3f3f3f;
int maxn=0xc0c0c0c0;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int n,m,k,p;
string s;
list<int>::iterator pos[N];
list<int> l;
bool vis[N];
void solve()
{cin>>n;l.push_front(1);pos[1]=l.begin();for(int i=2;i<=n;i++){cin>>k>>p;if(!p)pos[i]=l.insert(pos[k],i);else{auto nextt=next(pos[k]);pos[i]=l.insert(nextt,i);}}cin>>m;while(m--){int x;cin>>x;if(!vis[x])l.erase(pos[x]);vis[x]=true;}for(int x:l)cout<<x<<" ";cout<<endl; 
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);ll t=1;
//	cin>>t;while(t--){	solve();}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40206.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40206.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40206.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2023骨傳導耳機推薦,適合運動骨傳導耳機推薦

相信很多人跟我一樣&#xff0c;隨著現在五花八門的耳機品種增多&#xff0c;選耳機的時候真是眼花繚亂&#xff0c;尤其還是網購&#xff0c;只能看&#xff0c;不能試&#xff0c;所以選擇起來比較困難&#xff0c; 作為一個運動達人&#xff0c;為了讓大家在購買耳機時少走彎…

〔012〕Stable Diffusion 之 中文提示詞自動翻譯插件 篇

? 目錄 &#x1f388; 翻譯插件&#x1f388; 下載谷歌翻譯&#x1f388; 谷歌翻譯使用方法&#x1f388; 谷歌翻譯使用效果 &#x1f388; 翻譯插件 在插件列表中搜索 Prompt Translator可以看到有2個插件選項&#xff1a;一個是基于谷歌翻譯 〔推薦〕、一個基于百度和deepl…

jvm從入門到精通

jvm 1.jvm與java體系結構???????

奧威BI財務數據分析方案:借BI之利,成就智能財務分析

隨著智能技術的發展&#xff0c;各行各業都走上借助智能技術高效運作道路&#xff0c;財務數據分析也不例外。借助BI商業智能技術能夠讓財務數據分析更高效、便捷、直觀立體&#xff0c;也更有助于發揮財務數據分析作為企業經營管理健康晴雨表的作用。隨著BI財務數據分析經驗的…

【RP2040】香瓜樹莓派RP2040之新建工程

本文最后修改時間&#xff1a;2022年09月05日 11:02 一、本節簡介 本節介紹如何新建一個自己的工程。 二、實驗平臺 1、硬件平臺 1&#xff09;樹莓派pico開發板 ①樹莓派pico開發板*2 ②micro usb數據線*2 2&#xff09;電腦 2、軟件平臺 1&#xff09;VS CODE 三、版…

【C++】一文帶你初識C++繼承

食用指南&#xff1a;本文在有C基礎的情況下食用更佳 &#x1f340;本文前置知識&#xff1a; C類 ??今日夜電波&#xff1a;napori—Vaundy 1:21 ━━━━━━?&#x1f49f;──────── 3:23 …

CSS中的calc()函數有什么作用?

聚沙成塔每天進步一點點 ? 專欄簡介? CSS中的calc()函數及其作用? 作用? 示例1. 動態計算寬度&#xff1a;2. 響應式布局&#xff1a;3. 自適應字體大小&#xff1a;4. 計算間距&#xff1a; ? 寫在最后 ? 專欄簡介 前端入門之旅&#xff1a;探索Web開發的奇妙世界 記得點…

KCC@廣州開源讀書會廣州開源建設討論會

親愛的開源讀書會朋友們&#xff0c; 在下個周末我們將舉辦一場令人激動的線下讀書會&#xff0c;探討兩本引人入勝的新書《只是為了好玩》和《開源之迷》。作為一個致力于推廣開源精神和技術創新的社區&#xff0c;這次我們還邀請了圈內大咖前來參與&#xff0c;會給大家提供一…

軟件測試技術之單元測試—工程師 Style 的測試方法(3)

如何設計單元測試&#xff1f; 單元測試設計方法 單元測試用例&#xff0c;和普通測試用例的設計&#xff0c;沒有太多不同&#xff0c;常見的就是等價類劃分、邊界值分析等。而測試用例的設計其實也是開發者應該掌握的基本技能。 等價類劃分 把所有輸入劃分為若干分類&…

[UE4][C++]使用qrencode動態生成二維碼

一、使用CMake編譯x64版本qrencode 下載地址 GitHub - fukuchi/libqrencode: A fast and compact QR Code encoding libraryA fast and compact QR Code encoding library. Contribute to fukuchi/libqrencode development by creating an account on GitHub.https://github.…

2023/08/13_______JVM(CG)垃圾回收 算法(復制算法,標記清除,標記清除壓縮)

JVM GC算法 復制算法 1&#xff0c;每一次GC都會將伊甸&#xff08;Eden&#xff09;活的對象移到幸存區中&#xff1a;一旦Eden區被GC后 就會是空 只要有內容就是from區 誰空誰是to區 內存會從 伊甸->幸存區to->幸存from&#xff08;這個時候to和from交換區域&#xf…

EXPLAIN使用分析

系列文章目錄 文章目錄 系列文章目錄一、type說明二、MySQL中使用Show Profile1.查看當前profiling配置2.在會話級別修改profiling配置3.查看profile記錄4.要深入查看某條查詢執行時間的分布 一、type說明 我們只需要注意一個最重要的type 的信息很明顯的提現是否用到索引&…

kafka線上問題優化

如何防止消息丟失 生產者&#xff1a; 使用同步發送把ack設成1或者all&#xff08;非0&#xff0c;0可能會出現消息丟失的情況&#xff09;&#xff0c;并且設置同步的分區數>2 消費者&#xff1a;把自動提交改成手動提交 如何防止重復消費 在防止消息丟失的方案中&#…

leetcode 力扣刷題 數組交集(數組、set、map都可實現哈希表)

數組交集 349. 兩個數組的交集排序&#xff0b;雙指針數組實現哈希表unordered_setunordered_map 350. 兩個數組的交集Ⅱ排序 雙指針數組實現哈希表unordered_map 349. 兩個數組的交集 題目鏈接&#xff1a;349. 兩個數組的交集 題目內容如下&#xff0c;理解題意&#xff1a…

梯度爆炸和梯度消失的原因以及解決方法

文章目錄 1、原因&#xff1a;2、解決方法 1、原因&#xff1a; 梯度消失和梯度爆炸的根本原因是因為在反向傳播過程中&#xff0c;使用鏈式法則計算時&#xff0c;累積相乘效應導致梯度過大或者過小主要原因有&#xff1a; 1&#xff09;激活函數&#xff1a;例如sigmoid或者…

聊聊火車的發展

目錄 1.火車的概念 2.火車的發展歷史 3.火車對戰爭的影響 4.火車對人們出行造成的影響 1.火車的概念 火車是一種由機械動力驅動的陸上交通工具&#xff0c;通常用來運輸人員和貨物。它由一列或多列的連接在一起的車廂組成&#xff0c;有軌道作為其行駛的基礎&#xff0c;并通…

重建與突破,探討全鏈游戲的現在與未來

全鏈游戲&#xff08;On-Chain Game&#xff09;是指將游戲內資產通過虛擬貨幣或 NFT 形式記錄上鏈的游戲類型。除此以外&#xff0c;游戲的狀態存儲、計算與執行等皆被部署在鏈上&#xff0c;目的是為用戶打造沉浸式、全方位的游戲體驗&#xff0c;超越傳統游戲玩家被動控制的…

mysql面試

基礎篇 通用語法及分類 DDL: 數據定義語言&#xff0c;用來定義數據庫對象&#xff08;數據庫、表、字段&#xff09;DML: 數據操作語言&#xff0c;用來對數據庫表中的數據進行增刪改DQL: 數據查詢語言&#xff0c;用來查詢數據庫中表的記錄DCL: 數據控制語言&#xff0c;用…

php正則替換文章的圖片

要使用正則表達式替換文章中的圖片鏈接&#xff0c;可以按照以下步驟進行操作&#xff1a; 1. 獲取文章內容&#xff1a;首先&#xff0c;你需要獲取包含圖片鏈接的文章內容。你可以從文件中讀取文章&#xff0c;或者從數據庫中檢索文章內容。 2. 使用正則表達式匹配圖片鏈接…

JAVA編程學習筆記

常用代碼、特定函數、復雜概念、特定功能……在學習編程的過程中你會記錄下哪些內容&#xff1f;快來分享你的筆記&#xff0c;一起切磋進步吧&#xff01; 一、常用代碼 在java編程中常用需要儲備的就是工具類。包括封裝的時間工具類。http工具類&#xff0c;加解密工具類&am…