ACM-ICPC 比賽環境的使用


ACM-ICPC 現場賽不同的賽站可能比賽環境不同,不過一般都是 Ubuntu 系統。附帶的軟件可能略有不同,可能會有使用習慣的差異導致效率下降或者無法運行代碼,但是在終端下編譯運行代碼都是相同的。本篇博客介紹的是在終端下如何編輯代碼、編譯代碼、運行代碼以及調試代碼。

編輯代碼

當然是 vim 神器了。vim 的學習曲線挺大的,不過掌握基本的使用還是沒有問題的,可能一開始離開鼠標效率會不高,但是一旦熟悉了以后效率可能會比使用鼠標高。

這里介紹 vim 最基本的用法。

首先新建文件:

vim test.cpp

文件保存在當前目錄下。

后綴名是你想要的語言:.c .cpp .java .py

vim 有三種模式:普通模式 (normal)插入模式 (insert)可視模式 (visual)

一開始進入的就是普通模式,或者按下 Esc 鍵進入普通模式。普通模式就是替代其他編輯器日常使用鼠標的部分。

普通模式下一般輸入命令,所以不能亂按鍵盤(基本每個鍵都是命令)。

普通模式下可以用 hjkl 代替方向鍵,分別代表左下上右 (當然還是直接用方向鍵最舒服)。

普通模式下按 u 可以撤銷,撤銷上一次對文本的更改。按 x 可以刪除光標后的一個字符,按 dd 可以刪除整行。

普通模式下輸入 : 最下方就會輸出命令框,可以輸入命令。最常用的當然是保存和退出。保存是 :w,退出是 :q,強制退出是 q! (也就是修改后未保存直接退出))。可以疊加命令,也就是保存退出是 :wq。還可以增加一些配置,比如顯示行號::set number。但是這樣配置退出 vim 后就沒了。配置信息可以寫在名為 .vimrc 的文件中保存下來。一般保存在 ~/ 目錄下 (用戶目錄),只對某個用戶有效。全局配置一般在 /etc/vim/vimrc 或者 /etc/vimrc,對所有用戶有效。

這里推薦這篇 模板 的 vim 配置。

普通模式按下 i 鍵進入插入模式,插入模式下可以正常編輯代碼。

普通模式按下 v 鍵進入可視模式,可以批量選擇代碼,最常用的就是批量選擇代碼,然后按 d 刪除。

編譯代碼與運行代碼

C

C語言直接使用 gcc 編譯就行。

假設要編譯的文件名為 test.c

最常用的語句就是:

gcc test.c -o test

最后 test 為可執行程序的文件名,如果不加默認生成 a.out。

加個 -g 可以調試。

gcc test.c -o test -g

-Wall 輸出所有警告信息。

-O2 開 O2 優化

gcc 其他參數挺多的,不過比賽中不常用。

運行的話直接 ./test 就可以了。

假設同一目錄下有 test.in。

可以使用如下命令對輸入重定向:

./test < ./test.in

也可以對輸出重定向:

./test > ./test.out

輸出內容存入文件 test.out。

可以一起使用:

./test < ./test.in > ./test.out

這樣就不用加什么 freopen 之類的文件操作函數了,有時候提交時忘了刪除就直接 WA 了。

C++

C++ 使用 g++ 編譯。與 gcc 很相似。

假設要編譯的文件名為 test.cpp

g++ test.cpp -o test

-g-Wall-O2 參數作用與 gcc 一樣。

運行的話與 C語言部分一樣。

Java

假設要編譯的文件為 test.java (注意主類的名字要和文件名一致)

javac test.java

在同一目錄下會生成 test.class。

然后用以下命令運行:

java test

注意不要加 .class

Python

Python 是解釋型語言,直接運行就可以了。

假設要運行的文件為 test.py

用 Python2 運行:

python test.py

用 Python3 運行:

python3 test.py

當然目前很多賽站不支持 Python

如果想要更方便的編譯運行,可以寫一些 Shell 腳本。

調試代碼

這里只講用 gdb 調試 C++ 程序。

前提是編譯時加了 -g 參數。

假設要調試的代碼為 test.cpp

先編譯:

g++ test.cpp -o test -g

運行一下命令進入調試:

gdb test

輸入 l 顯示主函數所在的代碼部分。

l 后面可以加數字,表示顯示的行號。

也可以加函數名。

輸入 b 10 在第 10 行設置斷點。

輸入 delete 10 刪除第 10 行的斷點。

輸入 r 運行。

輸入 n 單步跟蹤。

輸入 c 執行到下一個斷點處。

輸入 print x 輸出 x 變量的值。

輸入 display x 每次單步執行都輸出 x 變量的值。

輸入 q 退出 gdb。

還可以用 gdb -tui 進入更好看的 gdb。


免責聲明!

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



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