CSU-1982 小M的移動硬盤

CSU-1982 小M的移動硬盤

Description

最近小M買了一個移動硬盤來儲存自己電腦里不常用的文件。但是他把這些文件一股腦丟進移動硬盤后,覺得這些文件似乎沒有被很好地歸類,這樣以后找起來豈不是會非常麻煩?
小M最終決定要把這些文件好好歸類,把同一類地移動到一起。所以現在小M有了這幾種操作:
1 u 表示把編號為u的文件放到最上面
2 u 表示把編號為u的文件放到最下面
3 u v 表示把編號為u的文件放到編號為v的文件的后面
已知在最開始的時候,1號文件到n號文件從上往下排布
現在小M已經給出了他所進行的所有操作,你能告訴他操作之后的序列是會變成什么樣子嗎?

Input

第一行為一個數字T(T<=10)表示數據組數
第二行為兩個數字n、m(1<=n,m<=300000)表示序列長度和小M的操作次數
接下來m行每行兩個或三個數字,具體含義見題面
保證數據合法

Output

輸出一行表示小M操作結束后的序列

Sample Input

1
10 5
1 5
2 3
2 6
3 4 8
3 1 3

Sample Output

5 2 7 8 4 9 10 3 1 6

題解

也是一道水題,但卻WA了很多發,這題用數組模擬雙向鏈表即可,先貼一開始WA的代碼

#include<bits/stdc++.h>
#define maxn 300050
using namespace std;
struct node {int l, r;
} a[maxn];
int main() {int t;scanf("%d", &t);while (t--) {int n, m;scanf("%d%d", &n, &m);for (int i = 1; i <= n; i++) {a[i].l = i - 1;a[i].r = i + 1;}int head = 1, tail = n;for (int i = 1; i <= m; i++) {int q;scanf("%d", &q);if (q == 1) {int x;scanf("%d", &x);if (x == head) continue;if (x == tail) tail = a[x].l;a[a[x].l].r = a[x].r;a[a[x].r].l = a[x].l;a[head].l = x;a[x].l = 0;a[x].r = head;head = x;}if (q == 2) {int x;scanf("%d", &x);if (x == tail) continue;if (x == head) head = a[x].r;a[a[x].l].r = a[x].r;a[a[x].r].l = a[x].l;a[tail].r = x;a[x].l = tail;a[x].r = n + 1;tail = x;}if (q == 3) {int x, y;scanf("%d%d", &x, &y);if (x == y) continue;if (x == head) {head = a[x].r;}if (y == tail) {tail = x;}a[a[x].l].r = a[x].r;a[a[x].r].l = a[x].l;a[x].r = a[y].r;a[a[y].r].l = x;a[x].l = y;a[y].r = x;}}int now = head;for (int i = 1; i < n; i++) {printf("%d ", now);now = a[now].r;}printf("%d\n", now);}return 0;
}
/**********************************************************************Problem: 1982User: ArtoriaxLanguage: C++Result: WA
**********************************************************************/

這個代碼只有一點沒注意到,即在q==3時,x處于tail時也會導致tail變化,很容易想的一個點,但卻WA了很多次,然后去網上搜題解,用a[0]表示鏈表頭,用a[n + 1]表示表尾才AC, 之后對拍一發才發現這個愚蠢的錯誤。


網上題解版:

#include<bits/stdc++.h>
#define maxn 300050
using namespace std;
struct node {int l, r;
} a[maxn];
int main() {int t;scanf("%d", &t);while (t--) {int n, m;scanf("%d%d", &n, &m);for (int i = 1; i <= n; i++) {a[i].l = i - 1;a[i].r = i + 1;}a[0].r = 1;a[n + 1].l = n;for (int i = 1; i <= m; i++) {int q;scanf("%d", &q);if (q == 1) {int x;scanf("%d", &x);a[a[x].l].r = a[x].r;a[a[x].r].l = a[x].l;a[x].l = 0;a[x].r = a[0].r;a[a[0].r].l = x;a[0].r = x;}if (q == 2) {int x;scanf("%d", &x);a[a[x].l].r = a[x].r;a[a[x].r].l = a[x].l;a[x].r = n + 1;a[x].l = a[n + 1].l;a[a[n + 1].l].r = x;a[n + 1].l = x;}if (q == 3) {int x, y;scanf("%d%d", &x, &y);if (x == y) continue;a[a[x].l].r = a[x].r;a[a[x].r].l = a[x].l;a[x].r = a[y].r;a[a[y].r].l = x;a[x].l = y;a[y].r = x;}}int now = a[0].r;for (int i = 1; i < n; i++) {printf("%d ", now);now = a[now].r;}printf("%d\n", now);}return 0;
}
/**********************************************************************Problem: 1982User: ArtoriaxLanguage: C++Result: ACTime:556 msMemory:4368 kb
**********************************************************************/

自己改正版:

#include<bits/stdc++.h>
#define maxn 300050
using namespace std;
struct node {int l, r;
} a[maxn];
int main() {int t;scanf("%d", &t);while (t--) {int n, m;scanf("%d%d", &n, &m);for (int i = 1; i <= n; i++) {a[i].l = i - 1;a[i].r = i + 1;}int head = 1, tail = n;for (int i = 1; i <= m; i++) {int q;scanf("%d", &q);if (q == 1) {int x;scanf("%d", &x);if (x == head) continue;if (x == tail) tail = a[x].l;a[a[x].l].r = a[x].r;a[a[x].r].l = a[x].l;a[head].l = x;a[x].l = 0;a[x].r = head;head = x;}if (q == 2) {int x;scanf("%d", &x);if (x == tail) continue;if (x == head) head = a[x].r;a[a[x].l].r = a[x].r;a[a[x].r].l = a[x].l;a[tail].r = x;a[x].l = tail;a[x].r = n + 1;tail = x;}if (q == 3) {int x, y;scanf("%d%d", &x, &y);if (x == y) continue;if (a[y].r == x) continue;if (x == head) {head = a[x].r;}if (x == tail) {tail = a[x].l;}if (y == tail) {tail = x;}a[a[x].l].r = a[x].r;a[a[x].r].l = a[x].l;a[x].r = a[y].r;a[a[y].r].l = x;a[x].l = y;a[y].r = x;}}int now = head;for (int i = 1; i < n; i++) {printf("%d ", now);now = a[now].r;}printf("%d\n", now);}return 0;
}
/**********************************************************************Problem: 1982User: ArtoriaxLanguage: C++Result: ACTime:560 msMemory:4368 kb
**********************************************************************/

轉載于:https://www.cnblogs.com/artoriax/p/10349153.html

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

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

相關文章

杜比服務器系統安裝教程,win10杜比音效如何安裝?win10安裝杜比音效的詳細教程...

杜比音效想必大家都不陌生&#xff0c;聽歌或者看電影開啟杜比音效可以給人一種身臨其境的感覺。不少朋友都升級了win10系統卻不知道如何安裝杜比音效&#xff1f;如何為自己的系統安裝杜比音效呢&#xff1f;感興趣的小伙伴請看下面的操作步驟。win10安裝杜比音效的方法&#…

劍指Offer_52_正則表達式匹配

題目描述 請實現一個函數用來匹配包括.和的正則表達式。模式中的字符.表示任意一個字符&#xff0c;而表示它前面的字符可以出現任意次&#xff08;包含0次&#xff09;。 在本題中&#xff0c;匹配是指字符串的所有字符匹配整個模式。例如&#xff0c;字符串"aaa"與…

分布式系統開發注意點_分布式系統注意事項

分布式系統開發注意點by Shubheksha通過Shubheksha 分布式計算概述&#xff1a;分布式系統如何工作 (Distributed Computing in a nutshell: How distributed systems work) This post distills the material presented in the paper titled “A Note on Distributed Systems”…

前端if else_應該記錄的一些項目代碼(前端)

1.共享登錄&#xff08;單點登錄&#xff09;主要是前端部分主要是根據是否有cookie來判斷是否已經登錄主系統&#xff0c;然后再根據是否有當前系統的登錄信息來&#xff08;這塊主要是sessionStorage做的&#xff09;判斷是否要再登錄當前系統。設置、讀取和設置cookie的方法…

Mac端解決(含修改8.0.13版的密碼):Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)...

1. 安裝mysql但是從來沒啟動過&#xff0c;今天一啟動就報錯&#xff1a; Cant connect to local MySQL server through socket /tmp/mysql.sock (2) 其實是mysql服務沒起來。。。 localhost:~ miaoying$ mysql.server start Starting MySQL ... SUCCESS! 然后再去sudo mysql就…

塔塔建網站服務器,塔塔帝國忘記哪個區怎么辦

7條解答1.在哪個區玩戰艦帝國忘記了怎么辦?忘了的話可以去官網登陸看看自己的 充值 或者禮包記錄 有沒有對應的區服 或者電話聯系問問客服 通過賬號 角色名字來查詢2.我忘記在哪個區怎么找如果你有游戲人生資格的話&#xff0c;就很容易找了&#xff0c;在游戲人生的個人主頁里…

Ixia推出首款太比特級網絡安全測試平臺

2016年11月18日&#xff0c;Ixia宣布推出全新CloudStorm平臺。作為首款太比特級網絡安全測試平臺&#xff0c;該平臺擁有前所未有的非凡性能&#xff0c;可用于測試及驗證超大規模云數據中心不斷擴大的容量、效率以及彈性。 ▲Ixia CloudStorm安全測試平臺 CloudStorm的正式面市…

[轉]oracle分析函數Rank, Dense_rank, row_number

oracle分析函數Rank, Dense_rank, row_number 分析函數2(Rank, Dense_rank, row_number) 目錄1.使用rownum為記錄排名2.使用分析函數來為記錄排名3.使用分析函數為記錄進行分組排名一、使用rownum為記錄排名&#xff1a; 在前面一篇《Oracle開發專題之&#xff1a;分析函數》&a…

Bali BaloCSS天才

Today Bali Balo, a French designer and developer, published a new piece: a cube suspended in darkness that rotates on its own. As it does, it reveals different sides, each offering a glimpse into a different world:今天&#xff0c;法國設計師兼開發商Bali Bal…

luogu P2470 [SCOI2007]壓縮

傳送門 dalao們怎么狀態都設的兩維以上啊?qwq 完全可以一維狀態的說 設\(f[i]\)為前綴i的答案,轉移就枚舉從前面哪里轉移過來\(f[i]min(f[j-1]w(j,i))(j\in [1,i])\) 現在要知道\(w(i,j)\)怎么寫,也就是區間\([i,j]\)的最小長度(要求區間最多只能在開頭有一個W),首先不壓縮的長…

服務器選擇重裝系統,云服務器重裝系統選擇

云服務器重裝系統選擇 內容精選換一換將外部鏡像文件注冊成云平臺的私有鏡像后&#xff0c;您可以使用該鏡像創建新的云服務器&#xff0c;或對已有云服務器的系統進行重裝和更換。本節介紹使用鏡像創建云服務器的操作。您可以按照通過鏡像創建云服務器中的操作指導創建彈性云服…

T-Mobile美國加速開展5G實驗:28GHz頻段成為新寵

據日經社報道&#xff0c;T-Mobile美國公司正在加速開展5G相關工作&#xff0c;在過去的一個月中動作頻頻。 T-Mobile美國與三星電子美國公司上月初共同宣布&#xff0c;將在今年下半年使用28GHz頻段和配備三星的波束成形技術的5G驗證實驗系統&#xff0c;開展室外5G移動通信的…

軟件項目可行性分析定義_如何定義最低可行產品

軟件項目可行性分析定義by George Krasadakis通過喬治克拉薩達基斯(George Krasadakis) 如何定義最低可行產品 (How to define a Minimum Viable Product) 從概念轉變為正確定義的MVP (Moving from a concept to a properly defined MVP) The Minimum Viable Product, althoug…

JavaSE第十五天20160823

線程 一、JAVA中創建線程的兩種方法&#xff1a; 1.繼承java.lang.Thread類。 2.實現java.lang.Runnable接口。 3.在JAVA中Thread類實現了Runnable接口&#xff0c;并且Thread類中定義了許多與線程相關的屬性與方法。 二、run():線程體&#xff0c;線程將要執行的代碼。 三、線…

dao層mysql復合語句_在業務中是使用多個Dao組合好,還是一個鏈接查詢好?

問題描述假如目前有一個查詢用戶詳情的接口用戶基礎表關聯了很多用戶其他信息的表&#xff0c;現在要把所有查詢出來&#xff0c;是使用多個dao在service中組合&#xff0c;還是直接鏈接查詢好示例代碼用戶表(user_base)用戶信息表1(user_info_1)用戶信息表2(user_info_2)用戶信…

九陰真經戰無不勝服務器位置,九陰真經各門派武功風水寶地分類及坐標大全

尋得一處風水寶地可以養神還可以修煉武功&#xff0c;九陰真經中的各大門派和全部武功適合修煉的寶地都在哪里呢&#xff1f;都分為哪幾類&#xff0c;具體坐標是什么&#xff1f;1、風水寶地作用&#xff1a;九陰真經風水寶地共分山、水、洞、林、雪、市六種&#xff0c;分別對…

Gartner Q2服務器市場報告5大要點

服務器場景調查 根據市場研究公司Gartner的調查報告&#xff0c;第二季度Dell的服務器市場取得了豐富的成果&#xff0c;HPE的市場份額比去年同期略有下降&#xff0c;但仍保留了其全球服務器市場第一的位置。 Gartner表示&#xff0c;全球服務器銷售收入在第二季度與去年同期相…

MySQL實戰面試題_Mysql實戰面試題

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓一、索引B Tree 原理1. 數據結構B Tree 指的是 Balance Tree&#xff0c;也就是平衡樹。平衡樹是一顆查找樹&#xff0c;并且所有葉子節點位于同一層。B Tree 是基于 B Tree 和葉子節點順序訪問指針進行實現&#xff0c;它具有 B T…

Redux有何優點?

by Justin Falcone賈斯汀法爾科內(Justin Falcone) Redux有何優點&#xff1f; (What’s So Great About Redux?) Redux elegantly handles complex state interactions that are hard to express with React’s component state. It is essentially a message-passing syste…

python基礎——使用模塊

python基礎——使用模塊 Python本身就內置了很多非常有用的模塊&#xff0c;只要安裝完畢&#xff0c;這些模塊就可以立刻使用。 我們以內建的sys模塊為例&#xff0c;編寫一個hello的模塊&#xff1a; #!/usr/bin/env python3 # -*- coding: utf-8 -*- a test module __author…