競技プログラミング

AtCoder青になりました

AtCoderで青になりました、というAtCoder色変記事である。 手短に自己紹介 レート推移、各種進捗のグラフ レート推移 AtCoder Problemsの各種進捗状況 解いた問題数×レートのグラフ アルゴリズムのスクールに通ってたので 時系列的なもの。 ライブラリ一覧 p…

実例から学ぶ Python競技プログラミングの定数倍高速化シリーズ1:徒競走

競技プログラミングのAtCoderの問題をPythonを使って解き、定数倍高速化した結果をまとめる。 定数倍高速化とは何か 注意事項 解法 処理時間まとめ 最初 高速化(1) 早期break 高速化(2) 計算量の削減 /(1)を上書き 高速化(3) 入力 input = sys.stdin.readli…

競プロと音ゲーと私

競技プログラミングから身を引くことにしました | Kichi's BLOG を読んでの感想と自分語りです。原型の文章は読んだその日に書いてたけど、その後寝かせてしまった。 特定言語だとうまく正解できないやつ わかる。 俺が使っているのはPythonであり、競技プロ…

python競技プログラミングで、二項係数の計算でTLEしたので高速化した話

競技プログラミング(AtCoderなど)によくある、二項係数(コンビネーション)を109+7で割った余りを求める話です。 前提条件 Pythonで実装するときに、気をつけるべきポイントを書いておきます。 C++やJavaを使ってる人は、この記事を読む意味はありません…

二項係数を10^9+7 で割った余りを求める方法

注意 2020年2月23日 以下に書いてある方法はやや遅く、TLEになる危険性もあります。新しく書いたこの記事も参考にしてください。 linus-mk.hatenablog.com 競技プログラミングでよくある「二項係数 nCk を109+7 で割った余りを求める」方法を整理しておく。 …

累積和を抽象化し、一般の累積演算を考える(累積GCD、累積XOR、他)

注意事項 対象の読者として、「累積和について一応わかっていて、単純な累積和の問題は解ける」くらいを想定しています。 「累積和って何?初めて聞いたよ!」という人は読んでもキツいと思います。 また、やや抽象的な議論になります。 競技プログラミング…

pythonの除算結果が浮動小数点数になったので、必要な精度が失われた話

(注:pythonの話を書いていますが、浮動小数点の精度の話は他のプログラミング言語でも同様だと思います。 pythonの記法では、浮動小数点の除算演算子が/であり、整数除算の演算子が//であることに注意してください) 特に、大きな数の計算で答えの整数を正…