Hatena::Grouptopcoder

横道にそれるTopCoder参加記録でもいいじゃないか

2018-06-04AtCoderでイエローになるまでにしたこと このエントリーを含むブックマーク

最近は少し精進を意識しています。

理由はよくよく考えてみると、ステータスになるからというモチベーションが大きい気がします。


・問題を解けるようにする

こちらは復習が基本になるかと思います。わかっててもなかなかできないやつです。

あとは作問したり、性質について洞察を深めるのも楽しくて有効かと思います。


・バグの発生を防ぐ

問題は解けていても、バグのために時間を浪費するのはなるべく避けたいものです。

intを使わず、すべてlong longを使うことにしました。今までそれが理由でメモリ不足になったりTLEになったことはありません。

組み合わせ数の計算はModIntクラスを作って、剰余を取り忘れたり、そのバグを疑って時間を浪費するのを避けるようにしました。

vectorもat()でバウンダリチェックしたいのですが、タイプするのが面倒でoperator[]を使ってしまっています。


・環境を整える

本当はIDEを使ったほうがいいんだろうなと思いつつ、vimmerしています。

テンプレートを整えたり、コンパイルの短縮エイリアスを使ったりするようにしました。

最近知って便利なのがpbcopyというクリップボードにコピーできるMacOSのコマンドです。

使い方は

cat A.cc | pbcopy

です。

いままでcatしてターミナルから文字を選択してコピペしていたので、提出するごとに長いときは10秒以上掛かっていたのが短縮できました。効果としては大きい部類だと思います。


・再利用する

中身の書き方を忘れたライブラリを使うのは何となく悲しくてライブラリは極力使わない主義だったのですが、最近はいくつかのライブラリを用意するようになりました。

問題を解くという行為に集中できるようになったのはメリットとして感じています。

そしてやはりcombinationをイチから書くと5分くらい掛かってしまうので、時間短縮の効果があります。