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。
ACM-ICPC 比赛环境的使用的更多相关文章
- 有关信息ACM/ICPC竞争环境GCC/G++叠插件研究记录的扩展
0.起因 有时.DFS总是比BFS受人喜爱--毕竟DFS简单粗暴,更,而有些东西BFS不要启动,DFS它似乎是一个可行的选择-- 但是有一个问题,DFS默认直接写入到系统堆栈.系统堆栈和足够浅,此时O ...
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...
- 【转】lonekight@xmu·ACM/ICPC 回忆录
转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...
- 【转】ACM/ICPC生涯总结暨退役宣言—alpc55
转自:http://hi.baidu.com/accplaystation/item/ca4c2ec565fa0b7fced4f811 ACM/ICPC生涯总结暨退役宣言—alpc55 前言 早就该写 ...
- 2016 ACM/ICPC Asia Regional Dalian Online 1006 /HDU 5873
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- HDU 5875 Function 【倍增】 (2016 ACM/ICPC Asia Regional Dalian Online)
Function Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- HDU 5876 Sparse Graph 【补图最短路 BFS】(2016 ACM/ICPC Asia Regional Dalian Online)
Sparse Graph Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)To ...
- 记第五届山东省ACM程序设计比赛——遗憾并非遗憾
记第五届山东省ACM程序设计比赛 5月10日上午9点半左右,我们的队伍从学校出发,一个多小时后到达本次比赛的地点-哈尔滨工业大学. 报道,领材料,吃午饭,在哈工大的校园里逛了逛,去主楼的自习室歇息了一 ...
- 2015 ACM / ICPC 亚洲区域赛总结(长春站&北京站)
队名:Unlimited Code Works(无尽编码) 队员:Wu.Wang.Zhou 先说一下队伍:Wu是大三学长:Wang高中noip省一:我最渣,去年来大学开始学的a+b,参加今年区域赛之 ...
- 训练报告 (2014-2015) 2014, Samara SAU ACM ICPC Quarterfinal Qualification Contest
Solved A Gym 100488A Yet Another Goat in the Garden B Gym 100488B Impossible to Guess Solved C Gym ...
随机推荐
- node_exporter + grafana
监控服务器CPU.内存.磁盘.I/O等信息,首先需要安装node_exporter.node_exporter的作用是用于机器系统数据收集. 下载安装: https://github.com/prom ...
- 面试题30:包含min函数的栈
思路: 1.首先将栈的基本结构写出 #初始化栈的写法 def __init__(self): self.stack = [] #栈的压入 (加self是实例化,如果前面加入静态装饰器啥的,就不需要 ...
- 基于spark邮件自动分类
代码放在github上:click me 一.数据说明 数据集为英文语料集,一共包含20种类别的邮件,除了类别soc.religion.christian的邮件数为997以外每个类别的邮件数都是100 ...
- undefined,null,!,!=之间的关系
1.!和!=的关系 2.null 和0的关系
- Python - zipfile 乱码问题解决
最近使用zipfile进行解包过程中遇到了很不舒服的问题,解包之后文件名是乱码的.下面进行简单总结: 首先,乱码肯定是因为解码方式不一样了,zipfile使用的是utf-8和cp437这两种编码方式, ...
- 美团2018年CodeM大赛-资格赛
https://www.nowcoder.com/acm/contest/138#question A.下单 水题…… B.可乐 题意:求期望 代码: #include<iostream> ...
- kubernetes容器集群部署Flannel网络
Overlay Network:覆盖网络,在基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路连接起来. VXLAN:将源数据包封装到UDP中,并使用基础网络的IP/MAC作为外层报文头 ...
- windows自动关机(任务计划程序 + exe文件)
需求:windows系统自动关机 的需求: 相关工具:win10系统中,使用windows自带的任务计划程序 和 windows自带的关机 exe文件 完成此需求 exe文件位置:C:\Windows ...
- Codeforces 1100E 拓扑排序
题意及思路:https://blog.csdn.net/mitsuha_/article/details/86482347 如果一条边(u, v),v的拓扑序小于u, 那么(u, v)会形成环,要反向 ...
- 力扣——Linked List Cycle(环形链表) python实现
题目描述: 中文: 给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. ...