zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    Mybatis(二) Mybatis通用的写法
    Mybatis(一)Mybatis相关概念
    NodeJS添加Jquery依赖
    安卓、IOS端AEC密钥加密 Java端密钥解密通用实现(16进制表现形式)
    关于博客园首页及详情页美化的代码
    MD5用户密码加密工具类 MD5Util
    .Net Core跨平台应用研究-CustomSerialPort(增强型跨平台串口类库)
    FtpServer穿透内网访问配置踩坑笔记
    .Net Core之编辑json配置文件
    玩转MQTT-阿里云之MQTT使用(下)
  • 原文地址:https://www.cnblogs.com/wulitaotao/p/11741446.html
Copyright © 2011-2022 走看看