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 ...
随机推荐
- smartGit的使用
合理管理自己的代码,对程序员来说是一件很重要的事,今天我也走上了github托管之路 要在Git上托管代码,首先你要要github官网创建一个代码仓库,用来放你的代码. 一,要托管到github,那你 ...
- 阿里云二级域名解析指向服务器另一台主机— —Nginx
这是在一台阿里云服务器没有任何域名,但是配置高,因此想借用另一台阿里云服务器(配置较低)已备案的域名 跳转到这台配置高的服务器,那么使用nginx反向代理 server { listen 80; se ...
- 8条关于Web前端性能的优化建议
一般网站优化都是优化后台,如接口的响应时间.SQL优化.后台代码性能优化.服务器优化等.高并发情况下,对前端web优化也是非常重要的. 下面说说几种常见的优化措施. 1.HTML CSS JS位置 一 ...
- BZOJ 4657 (网络流)
题面 Nick最近在玩一款很好玩的游戏,游戏规则是这样的: 有一个n*m的地图,地图上的每一个位置要么是空地,要么是炮塔,要么是一些BETA狗,Nick需要操纵炮塔攻击BETA狗们. 攻击方法是:对于 ...
- wireshark 识别http的标准
使用route add 本机ip 255.255.255.255 网关ip metric 1 的方式 会使访问本机ip的连接发送到局域网内,这样wireshark就可以抓取到 但有一点需要注意 如果本 ...
- js中的相等与逗号运算符用法
/** * 相等运算符 '==',相等则返回true,不等则返回false * - 用 '==' 来比较两个值时,若值的类型不同,则会自动进行类型 * 转换,将其转换为相同的类型然后再进行比较. */ ...
- 拓展练习:Linux权限管理--基础权限/ 特殊权限
目录 基础权限拓展练习 特殊权限拓展练习 基础权限拓展练习 1.用户基础权限为9位,每三位为一组,每组代表着谁的权限? 前三位代表属主权限位 中间三位代表属组权限位 后三位代表其他用户权限位 2.权限 ...
- Nginx详细安装部署教程(转)
一.Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二.Nginx安装 1.下载N ...
- 十、设计模式之代理(Proxy)模式
什么是代理模式 代理模式是对象的结构模式,为其他对象提供一种对象以控制对这个对象的访问. 代理模式的结构图如下:(源自大话设计模式) Subject:定义了RealSubject和Proxy的公共 ...
- [几何]计算不规则多边形的面积、中心、重心(Android,转)
转自:[几何]计算不规则多边形的面积.中心.重心 最近项目用到:在不规则多边形的中心点加一个图标.(e.g: xx地区发生暴雪,暴雪区域是多边形,给多边形中心加一个暴雪的图标) 之前的设计是,计算不规 ...