Skip to content

birdwatcherYT/atcoder-template

Repository files navigation

atcoder-template

atcoderのABC用C++テンプレ

使い方

  • template.cppを問題 (A,B,C, ...)ごとにコピーして使う
    • ファイル名にスペースを含まないようにする
  • makeでディレクトリ内のすべてのcppファイルをそれぞれコンパイル
  • tools.cpp必要に応じてコピペして使える関数を実装
    • a^n mod m
    • nCr
    • nCr mod m
    • ダイクストラ(by 優先度付きキュー)
    • 幅優先(by キュー)
    • 深さ優先(by スタック)
    • 深さ優先(by 再帰)
    • UnionFind など
  • コンパイル後に自動的に実行するようにするにはMakefileの# ./$@のコメントアウトを外す

使用例

機能

vector<T>ostream/istreamに対して演算子<</>>を定義

vector<int> vec(3);
cin >> vec;
cout << vec;

10 20 30 (入力)
[ 10, 20, 30, ]

pair<T1, T2>, tupleostream/istreamに対して演算子<</>>を定義

pair<int, int> p;
cin >> p;
cout << p;

1 2 (入力)
(1, 2)

set<T>/map<T1, T2>ostreamに対して演算子<<を定義

set<int> s{1,2,3};
cout << s;

{ 1, 2, 3, }

map<int, int> m{{1,2},{3,4}};
cout << m;

{ 1:2, 3:4, }

スペースで区切って与えられた引数を入力/出力する関数を定義

int a,b,c;
IN(a,b,c);
OUT(a,b,c);

1 2 3 (入力)
1 2 3

その他表記が簡単になるマクロやtypedefを定義

REP(i, 3)
    OUT(i);

0
1
2

LL a = 1LL; // long long
VI vec; // vector<int>

詳しくはtemplate.cppを参照。

最適化オプションで-O3に相当するものを準備

// #pragma GCC optimize("O3")

使えないコンパイラでは無視される. 使用する場合はコメントアウトを外す.

デバッグ用に標準入力を簡単に文字列ストリームに切り替えれるコードを用意

istringstream debug_iss(R"(
デバッグ時はここに入力を貼り付けて下記マクロのコメントアウトを外す
)");
// #define cin debug_iss

ac-libraryを使う場合

  1. ac-libraryをダウンロードしてくる
  2. zipを展開してac-libraryをcppと同じ階層に置く
  3. Makefileの以下のコメントアウトを外す
# INCLUDE  = -I ac-library
  1. includeして使う
#include <atcoder/all>

About

atcoder用C++テンプレ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages