CSP考试由于是Linux评测系统,故使用windows参赛的选手避免不了出现系统之间的锅。

windows用户真得劲!

怎么办?还好官方给出NOI_Linux系统参赛。然而这篇Blog,会以Ubuntu系统进行演示(不用担心,Ubuntu和Linux除了界面不一样,实质和命令都是相同的)

Ubuntu上场了

Ubuntu编译指南

进入Ubuntu系统,在你想存的地址中新建一个空白文档,名称是可以随需要写,但是 名称一定要记得加.cpp后缀!

举个栗子: "A+B_Problem.cpp"

即刻,右键点击文件,打开方式——选择 "GNU Emacs 25(GUI)" 。点进去后,直接开始写代码就好了。我们之所以要用GNU Emacs 25(GUI)打开,是因为下文的配置适用于GNU Emacs 25(GUI),且个人感觉GNU Emacs 25(GUI)更好用。

比如:

#include<bits/stdc++.h>
using namespace std;
int a,b;
int main(){
scanf("%d %d",&a,&b);
printf("%lld",(long long)(a + b));
puts("");
return 0;
}

一定记得,每次打完代码,都要按Ctrl+x+s保存文件(不然一旦关机了......系统通常在你关闭未保存的文件时会提示你保存,点击yes即可)

为什么?

Ans:我们之后会讲到,当你需要运行文件时,要在终端先编译源代码,然后运行类似于windows中的.exe文件的a.out。然而,当你不保存源文件,之后的编译操作都只会编译未修改前的代码,故不管怎么改,输出都不会改变。

· 首先,将代码保存(请先确保能编译),并确保是否需要开文件(freopen)

· 然后,打开终端,输入文件所在路径,如当文件在桌面中的新建文件夹里面,则输入 "cd 桌面/新建文件夹"

· 这时,输入"g++ 代码名称.cpp",如"g++ check.cpp",此乃编译文件。若终端提示错误时,请回到程序修改Bug,并将步骤从“首先”二字重新开始。

· 然后,你会发现文件夹中多了一个"a.out",这时,在终端输入"./a.out",并输入样例,按回车,就可以得到输出了。当你的代码有文件时,请确保有输入文件,输出也会在输出文件中。

然而有时候编译错误,终端会详细提示你哪里有问题(具体怎么样全靠大家英语能力了)。

是不是很激动?

GNU Emacs 25(GUI)编译器配置优化

在windows中用Dev-C++用顺手了,用这个四不像的编译器真TM想骂人。

那么我们不妨来修改修改配置,让编译器更加清爽。

怎么修改配置呢

首先,点击文件,进入主文件夹(Home),按Ctrl+h显示所有文件,然后新建空白文档,文档名".emacs",在里面输入下面的东西,复制粘贴即可。

超级豪华顶级配置 (当你在家食用Ubuntu的时候,肯定希望配置越NB越好。)

(global-set-key [f9] 'compile-file)
(global-set-key [f10] 'gud-gdb)
(global-set-key (kbd "C-s") 'save-buffer)
(global-set-key (kbd "C-z") 'undo)
(global-set-key (kbd "RET") 'newline-and-indent)
(global-linum-mode t)
(show-paren-mode t)
(define-key key-translation-map (kbd "C-d") (kbd "M-p M-y"))
(global-set-key (kbd "M-p M-y") 'kill-whole-line)
(define-key key-translation-map (kbd "C-a") (kbd "C-x h"))
(setq c-default-style "awk")
;;;上面是考场必备
(ido-mode t) (setq default-frame-alist
'((vertical-scroll-bars)
(top . 25)
(left . 45)
(width . 120)
(height . 40)
(background-color . "grey15")
(foreground-color . "grey")
(cursor-color . "gold1")
(mouse-color . "gold1")
(tool-bar-lines . 0)
(menu-bar-lines . 1)
(scroll-bar-lines . 0)
(right-fringe)
(left-fringe))) (global-hl-line-mode 1) (set-face-background 'highlight "gray5")
(set-face-foreground 'region "cyan")
(set-face-background 'region "blue")
(set-face-foreground 'secondary-selection "skyblue")
(set-face-background 'secondary-selection "darkblue") ;;;;;设置org模式
(setq org-startup-indented t)
;(setq org-log-done 'time)
;(s.etq org-log-done 'note)
; ;;;无关紧要
(set-cursor-color "wheat")
(set-mouse-color "wheat")
(global-font-lock-mode t);;高亮
;;;;;设置编译信息
(defun compile-file ()
(interactive)
(compile (format "g++ -o %s %s -g -lm -Wall" (file-name-sans-extension (buffer-name))(buffer-name))))
;;(global-set-key (kbd "<f9>") 'compile-file)
;;;;;设置F9一键调试
;;;;;改变emacs标题栏的标题
(setq frame-title-format "CJY-Dragon")
;;;;;允许emacs和外部其他程序的粘贴
(setq x-select-enable-clipboard t)
;; 显示列号
(setq column-number-mode t)
;;设置tab的宽度
(setq default-tab-width 4)
(setq c-basic-offset 4)
;;;;;启用时间显示设置(可能时间需要调整)
(display-time-mode 1)
;;;;;时间使用24小时制
(setq display-time-24hr-format t)
;;;;;时间显示包括日期和具体时间
(setq display-time-day-and-date t)
;;;;;时间的变化频率
(setq display-time-interval 10)
;;;;;是用滚轴鼠标
(mouse-wheel-mode t)
;;;;;备份设置
;;;;;emacs还有一个自动保存功能,默认在~/.emacs.d/auto-save-list里,这个非常有用,我这里没有改动,具体可以参见Sams teach yourself emacs in 24hours(我简称为sams24)
;;;;;备份设置方法,直接拷贝
(setq backup-by-copying t)
;; 自动存盘
(setq auto-save-mode t)
;;去警告铃声
(setq visible-bell nil)
(setq ring-bell-function 'ignore)
;;;;;指针取消闪动,不然眼睛会花了
(blink-cursor-mode -1)
;;;;;滚动页面时比较舒服,不要整页的滚动
(setq scroll-step 1
scroll-margin 3
scroll-conservatively 10000)
;;;;;设定删除保存记录为200,可以方便以后无限恢复
(setq kill-ring-max 200)
;;;;;修改透明度
(set-frame-parameter (selected-frame) 'alpha (list 85 50))
(add-to-list 'default-frame-alist (cons 'alpha (list 85 50)))
(setq-default cursor-type 'bar) (show-paren-mode 1);;括号匹配
(fset 'yes-or-no-p 'y-or-n-p);;酱油的
(setq make-backup-files nil)
(global-auto-revert-mode t);自动reload文件 (global-set-key (kbd "<f8>") 'gdb-many-windows) (custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(blink-cursor-mode nil)
'(column-number-mode t)
'(cua-mode t nil (cua-base))
'(display-time-mode t)
'(inhibit-startup-screen t)
'(show-paren-mode t))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(default ((t (:family "Ubuntu Mono" :foundry "unknown" :slant normal :weight normal :height 143 :width normal)))))
(auto-insert-mode) ;;; Adds hook to find-files-hook
(setq auto-insert-directory "~/.emacs.d/mytemplates/") ;;; Or use custom, *NOTE* Trailing slash important
(setq auto-insert-query nil) ;;; If you don't want to be prompted before insertion
(define-auto-insert "\." "moban.cpp")

但是这个配置在考场上又不能复制粘贴,这么一大段,也被不下来吧

考场易记高级配置

(set-background-color "gray15")
(set-foreground-color "gray") (global-set-key [f9] 'compile)
(global-set-key [f10] 'gud-gdb)
(global-set-key (kbd "C-s") 'save-buffer)
(global-set-key (kbd "C-a") 'mark-whole-buffer)
(global-set-key (kbd "RET") 'newline-and-indent) (setq default-cursor-type 'bar)
(setq default-tab-width 4)
(setq c-default-style "awk") (set-frame-parameter (selected-frame) 'alpha (list 85 50))

粘贴完之后呢

保存,关闭即可。这时候再用GNU Emacs 25(GUI)打开你任意一个程序

哇,爽爆了

修改配置的好处都有啥?

谁说对了就给他

御·Dragon的感受如下

  1. F9一键编译,可以避免在终端g++时编译错误又返回而浪费时间。
  2. F10一键运行,不用到终端去了
  3. 编译器透明,(需要超级豪华顶级配置),要看题面、数据时不用总是切屏
  4. 页面及其清爽

@Karry5307 大神给出了一些别的界面优化

Ubuntu对拍帮手

对拍是什么?

这里我不细说。

就是两个源程序,一个对拍程序,随机一组数据比较两个源程序的输出一不一样

Ubuntu的对拍怎么弄?

注意:对拍一定要开文件!

我们这里一共需要 4 个程序,分别是"data.cpp"、"my.cpp"、 "text.cpp"、"check.sh"

(重点) 在每次修改完后、对拍前,请先进入"my.cpp"、"text.cpp"与"data.cpp"进行编译,否则新的对拍只会测试修改前的代码,使得答案不改变!

"data.cpp"为数据生成程序,随题目需要求改

我们还是拿A+B举例子,A+B的随机数据代码如下

#include<bits/stdc++.h>
using namespace std; const long long MOD=1e18; int main()
{
freopen("input.in","w",stdout);//input.in是对拍当前输入数据的文件
srand(time(NULL));//这个地方很重要,保证了你每次随机出来的数不一样
int a,b;
a = rand()%100000000;//随机数
b = rand()%100000000;//随机数
printf("%d %d",a,b);
return 0;
}

"my.cpp"为 自己写的 程序(即正确性需要对拍验证的程序)

#include<bits/stdc++.h>
using namespace std;
int a,b;
int main(){
freopen("input.in","r",stdin);
freopen("my.out","w",stdout);
scanf("%d %d",&a,&b);
printf("%lld",(long long)(a + b - 1));
puts("");
return 0;
}

"text.cpp"为与你自己程序 对拍的程序 (如题解、暴力等)

#include<bits/stdc++.h>
using namespace std;
int a,b;
int main(){
freopen("input.in","r",stdin);
freopen("text.out","w",stdout);
scanf("%d %d",&a,&b);
printf("%lld",(long long)(a + b));
puts("");
return 0;
}

"check.sh"为对拍程序

在check.sh中输入(推荐使用emacsGUI编译)

#!bin/bash
while true; do
./data
./my
./text
if diff my.out text.out; then
echo AC
else
echo WA
exit 0
fi
done

以上全部保存到文件里面即可。

然后在终端输入在终端输入

bash ./check.sh

即可运行进行对拍

百度网盘对拍压缩包(A+B-Problem为例,test.cpp不保证为正解A+B Problem 都不是正解的我太菜了)提取码: dhe5

欢迎前来拍砖

CSP考场Emacs使用指南[原创]的更多相关文章

  1. Emacs 快速指南(中文翻译)

      Emacs 快速指南 目录 1. 小结(SUMMARY) 2. 基本的光标控制(BASIC CURSOR CONTROL) 3. 如果 EMACS 失去响应(IF EMACS STOPS RESP ...

  2. Emacs 快速指南 - 原生中文手册

    Emacs 快速指南 -折叠目录 1. 小结(SUMMARY) 2. 基本的光标控制(BASIC CURSOR CONTROL) 3. 如果 EMACS 失去响应(IF EMACS STOPS RES ...

  3. emacs使用指南

    上大学的时候使用过几个简单的命令,用上windows后除了dos很少用命令行处理问题.现在MBP在手不用用emacs多可惜啊. 我上午搜索了下资料,都说emacs是神器,但是神不神看个人啦.这东西也不 ...

  4. 菜鸡的考场emacs配置

    (setq default-tab-width 4) (setq c-default-style "awk") (setq default-cursor-type 'bar) (e ...

  5. REHの收藏列表

    搬运自本人的AcWing,所以那里的文章会挺多. 友链(同类文章) :bztMinamoto 世外明月 mlystdcall 新人手册:AcWing入门使用指南 前言 有看到好文欢迎推荐(毛遂自荐也可 ...

  6. Emacs常用基本操作

    按键约定 组合按键 Emacs中大量的按键操作都是各式各样的组合按键(快捷键),下面是几种通常的约定: Ctrl键:表示为C Alt键:表示为M Shift键:表示为S 组合按键:比如向下移动一行的组 ...

  7. Emacs学习心得之 基础操作

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Emacs学习心得之 基础操作 1.前言与学习计划2.Emacs基础操作 一. 前言与学习计 ...

  8. 【SFA官方翻译】使用 Kubernetes、Spring Boot 2.0 和 Docker 的微服务快速指南

    [SFA官方翻译]使用 Kubernetes.Spring Boot 2.0 和 Docker 的微服务快速指南 原创: Darren Luo SpringForAll社区 今天 原文链接:https ...

  9. [Emacs] Emacs使用介绍

    详细,可参考该文档(转载):Emacs 快速指南 - 原生中文手册 C-x C-c 关闭Emacs会话 C-v/M-v 向前/后翻页 C-n/C-p 光标向下/上移一行 C-f/C-b 光标向前/后移 ...

随机推荐

  1. 利用kubeadm快速部署 kubernetes 集群

    结合一下两个教程 https://www.cnblogs.com/along21/p/10303495.html 链接:https://pan.baidu.com/s/1O_pcywfso4VFOsF ...

  2. 使用Nexus3搭建Maven私服

    1.搭建Maven私服背景 公司还是按捺不住,要搭建一个自己的Maven本地仓库,可以让开发人员down架包,从内网还是快很多. 这样公司的maven本地仓库就是 开发人员自己电脑上的maven仓库 ...

  3. Spring boot 梳理 - mappingJackson2JsonView

    MappingJacksonJsonView已被废弃了: http://static.javadoc.io/org.springframework/spring-webmvc/4.0.1.RELEAS ...

  4. Nebula Graph 技术总监陈恒:图数据库怎么和深度学习框架进行结合?

    引子 Nebula Graph 的技术总监在 09.24 - 09.30 期间同开源中国·高手问答的小伙伴们以「图数据库的设计和实践」为切入点展开讨论,包括:「图数据库的存储设计」.「图数据库的计算设 ...

  5. Docker 本地私有仓库搭建:

    Docker 本地私有仓库搭建: 创建数据卷目录: mkdir /home/sky/registry 用registry镜像启动容器: docker run -d -p 5000:5000 -v /h ...

  6. 理解Android中的注解与反射

    反射 Java反射(Reflection)定义 Java反射机制是指在运行状态中 对于任意一个类,都能知道这个类的所有属性和方法:对于任何一个对象,都能够调用它的任何一个方法和属性: 这样动态获取新的 ...

  7. Android系统介绍与框架

    一.Andriod是什么? Android系统是Google开发的一款开源移动OS,Android中文名被国内用户俗称“安卓”.Android操作系统基于Linux内核设计,使用了Google公司自己 ...

  8. 关于MySQL退出命令,还有你不知道的一种操作

    前两天再进MySQL窗口的时候,手快点了一个 ' ,并且按下了enter键,于是就出现了这种情况, 然后就退不出来了,为此我还特意上网查了一下,最后的结果基本上都是只能关闭MySQL 重新进入. 因为 ...

  9. Oracle自带工具sql优化集-SQL Tuning Advisor (使用心得体会)

    如何有效的诊断和监控高负载的SQL对于DBA来说并非是件容易的事情,对SQL语句手工调优需要很多的经验和技巧, 结合个人经验常见如下问题:          . 对SQL语句本身进行优化以便获得更优的 ...

  10. js完整

    jQuery jQuery介绍 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行 ...