Home > libalgo > ICPC 開始直後の準備

ICPC 開始直後の準備

私の一存で厳選した設定なので適宜変更すること.

~/.emacs.d/init.el に次のように書く.~/.emacs~/.emacs.d/emacs.el があったら消す.

(global-set-key "\C-z" 'undo)            ;; Undo
(global-set-key "\C-s" 'isearch-forward) ;; 検索
(global-set-key "\C-r" 'query-replace)   ;; 置換
(global-set-key "\C-j" 'dabbrev-expand)  ;; 補完
(global-set-key "\C-h" 'keyboard-quit)   ;; 頻発するヘルプの誤爆を殺す
(setq inhibit-startup-message t)         ;; うざいメッセージを殺す
(show-paren-mode t)                      ;; 対応する括弧の表示
(add-hook 'c++-mode-hook 'flymake-mode)  ;; 逐次文法チェック(ICPCでEmacsを選ぶ理由)
;; 4スペースインデント
(setq-default
 c-basic-offset   4
 tab-width        4
 indent-tabs-mode nil)

~/.bashrc の末尾に次を追記.

bind 'set completion-ignore-case on'        # 大文字小文字を無視してtab補完
ulimit -s 1048576                           # スタックメモリ1GBでオーバーフロー防止
alias g="g++ -std=gnu++11 -Wall -Wextra -g" # 積極的に警告
alias a="./a.out"
alias l="ls"
alias k="ls"

作業ディレクトリに flamake-mode 用の Makefile を置く.インデントは必ずタブにする.

check-syntax:
	g++ -Wall -Wextra -Wshadow -fsyntax-only -std=gnu++11 $(CHK_SOURCES)

作業ディレクトリに template.cc を置いてコピー.#define int ll するときは ll の定義直後に書く.

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i, n) for (int i = 0; i < (int)(n); ++i)
#define all(c) begin(c), end(c)
#define dump(x) cerr << __LINE__ << ":\t" #x " = " << (x) << endl
cat template.cc > {A,B,C,D,E,F,G,H,I,J,K,L,M}.cc