競賽Noi_Linux使用總結(vim)


  剛換完Linux,趁着教練給的改題時間(T2確實猛)自己上網找了好多博客,發現很多跟競賽有關的內容是碎片化的,從最基本的如何用vim寫代碼、編譯、運行,再到怎么改設置使打代碼時手感強一些,最后學對拍,用了小半天,總結一下。

基本操作:

vim的大部分操作需要在終端上進行,說白了就是在終端上寫代碼(盡管這種說法可能不甚嚴謹),下面介紹比賽時的基本操作,圖文均有。

1、打開終端。

同時按下Alt、Ctrl以及t。

 

 

2、一些輔助操作:

1>查看list(簡單理解就是文件(夾)目錄), 在終端輸入指令 ls

可以幫我們看看我們是否成功新建文件夾。

2>創建文件夾,在終端輸入指令mkdir+文件夾名

競賽時有的比賽是不給選手提前建好文件夾的,自己建唄,而且可以把一些碼塊(對拍的一套)裝在一起。

3>進入文件夾,在終端輸入指令 cd+文件夾名

然后由於我們初學,我們會很擔心自己的操作是否成功,所以我們可以去點擊左上角“應用程序”->"文件"->"Yushi",如圖:

另外,由於博主的linux沒有多少插件(也許是這個原因吧),博主無法在vim中把代碼復制出來,所以,我們打完代碼交oj的時候,就可以從這里直接打開文件進行復制,如果讀者感興趣以及有條件,那么請自己去查詢資料,學習指令,嘗試在vim中把信息直接提取出來,請諒解。

3、開啟代碼之旅

首先打開vim,在終端中輸入vim xx.cpp,如圖:

進入后發現什么都干不了,不急,按一下i,進入插入模式,如圖:

然后打一手a+b problem(此時你的手感應該不太好)

看到左下角的“wq”了嗎?意思是保存並退出,首先按下“Esc"退出插入模式,然后按下“:”,輸入“wq”即可,另外“w“是保存,”q"是退出,讀者可以自行嘗試一些命令,畢竟探索也是競賽的一部分,雖然有些費時間。

然后我們看一下文件夾:

這樣就可以點開復制啦(略心塞)。

然后編譯,在終端輸入g++(編譯語言)xx.cpp(剛寫的代碼)-o(記住就完事了)xx(一般這么打,比較符合習慣,具體原理不講),如圖:

編譯失敗,則在終端輸出錯誤信息,否則成功,看一眼文件夾:

那個小齒輪看來跟exe文件有些相似(也許吧)。

接着運行,輸入./xx(xx就是你剛建的那個齒輪),如圖:

輸入樣例(不要在意上面的那一堆,a+b打錯了……)

好了成功,去文件夾打開文件上交oj,應該能A吧(有點虛,沒long long)。

修改設置

接着來講一下怎么提高手感,首先強調一下,平時練習時就盡量別安裝插件,因為你不知道比賽時的配置,記一些簡單的命令即可,沒必要改的異常華麗。另外經過博主測試,當你把上一次的代碼粘進來(復制不行粘貼竟然可以,有些出乎意料),如果你有以下的修改操作,那么后果就是代碼錯行,非常難受,讀者可以自己去嘗試一下。以下的設置僅供參考,更詳細的命令可以查閱資料,博主進給出一些自己明白是什么意思的命令,別的好命令再去嘗試吧。(一定記住先粘進來再該設置)。

首先打開vimrc,具體操作如下(我也不懂為什么)在終端輸入vim ~/. vimrc,注意“/”和“.”一定別打反,如圖:

 

然后打上如下代碼(注意圖文不符):

set nu //不要打這些注釋……//顯示行號
set mouse=a //鼠標使用
set tabstop=2 //tab縮進為2(不嚴謹)
imap [ []<ESC>i //把[映射為[]
imap ( ()<ESC>i //同上
imap { {}<ESC>i
imap " ""<ESC>i
imap ' ''<ESC>i

wq保存,然后再打代碼時就比較舒服了,推薦提前在自己的博客等位置復制一份,直接粘(當然你有硬盤保護的話)。

autoindent和smartindent是自動/智能縮進,重新打代碼時加上比較好,復制進vim時不要有(有解決辦法請留言解決補充)。

還有一種操作,在vim打代碼時,在普通模式(就是沒進插入模式之前)輸入:set autoindent這類操作也是可以的,但是等你wq后再進來,就沒有了(反正我是這個情況),所以長時間訓練還是vimrc好。

對拍

首先,請確保在閱讀下面文字之前學會如何在windows系統下進行對拍,最基礎的fc,system,rand等一定要會。沒有基礎的讀者,請移步別的博客,博主目前沒有寫對拍的想法,在此抱歉。

1、寫出正確的解法(一般純暴力)(這里用std表示),如圖:

2、寫出自己的解法(用vio表示)(感覺有些奇怪,讀者自己去改名吧,隨自己喜好),如圖:

3、根據題意寫數據生成器(用rand表示),如圖:

4、對拍的運行程序,讀者可以根據自己的需要去添加諸如運行時間(ctime,clock),測試點數等,這里僅給出普通的Ac,Wa0。請仔細閱讀下圖,看一看linux對拍與windows對拍的區別:

首先運行程序需要“./”,閱讀完上文,讀者應該可以理解。剩下的就是把fc->diff,還是,比對相同時返回0。

在運行上圖代碼片之前,要對所有的子程序進行編譯,在程序旁邊的文件夾背景中已經給出示范(編譯錯名字一定要及時改,其實挺坑的)。

然后./pair運行一下。

對拍成功。

linux再新奇也僅僅是一種系統,並不是競賽研究的方向,只要學會基礎操作和對拍方式就足夠,沒有必要花時間去弄一些毫無價值(最起碼當前來說是的)的東西。希望對讀者有些許幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM