Close

2017年8月30日

競プロレポート夏休み特別編:第三回

こんにちは。なんともう8月の終わりが目の前に来てしまいました。嘘だと言ってほしいです。

さて今回の競プロレポートは、前回予告したとおり『うちのテンプレ使ってください!』です。
とはいえ、先日のAGCでようやく名前の色が変わった(茶色になりました)ほどの実力しかないので、もっと強い競プロerの方は是非拡張してほしいな……なんて思っています。

テンプレート

#include <bits/stdc++.h>
#define ll long long
#define all(a) (a).begin(),(a).end()

using namespace std;

int main(int argc, char const *argv[]) {

return 0;
}

解説っぽいもの

一行目のincludeは、全ての標準ライブラリがまとめられる方法です。gccについてくるらしいです。(AtCoderでは使えています)
二行目はlong long型を略せるようにしています。もしもう一桁欲しくなったときにはunsignedと書き加えれば良いので便利です。(よほどのことがないとしませんが)
三行目はsort()などで必要なv.begin(),v.end()を一括でsort(all(v))で書けるようにしています。逆ソートのときは sort(all(v),std::greater<int>());と書けばokです。

自分自身Atomを使っているのでリピートマクロなどは必要ないと思って省いています。
好きな書き方などに合うよう適当なマクロを書いてみたり、よく使う関数(gcdなど)を作っておくなど、本番は問題としっかりを向き合えるように準備しておくのも大事ではないでしょうか。

番外編

現在一日1ACを続けているのですが、どうにも問題を選ぶのがめんどくさい(決めるのが意外と手間)なので、ターミナル(cmd)上で選んでくれるようなツールを作りました。

ちなみに同じフォルダにAC.txtがあり、[最新のABC回数][-1][A問題でAC済み(改行区切り)][-1][B問題でAC済み(改行区切り)]……という具合に格納するようになっているので、既にやっている問題はこちらに書いておくとそれを除いて選んでくれます。
まだ最低限動く程度にしか実装していないのですが、無駄にエラー時(モード選択時に1~3以外や、難易度選択でA~D以外など)のセリフが多いです。

実はこういうツール的なものを作ったのは初めてで、ファイルの読み込みと乱数にはすごく悩みました。あとはファイル書き込みをどうするのかが一番の悩みです……。
頭のなかにあるものを、技術がボトルネックにならずに出力できるよう頑張りたいなと思いました。もっと色々なものが作りたい!!!

以上、競プロレポート第三回でした。いつにもまして文字数が多くなったレポートですが、ここまで読んでくださった方、ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA