徒然

思いついたら書きます

競技プログラミング

ABC332 E - Lucky bag 半分全列挙解法

AtCoder Beginner Contest 332 E - Lucky bagを半分全列挙で解いたので解法を書いておきます。

「確率 mod 998244353」とか「期待値 mod 998244353」って何なの?という話

はじめに 分数のmodって何?AtCoderの注釈を読んでも意味わからないんだけど?といった方向けの記事です。 なおこの記事上は法(998244353や1000000007など)が素数であることを前提とします。

Mo's Algorithmのイメージを視覚的に理解したい

はじめに Mo's AlgorithmはABC242-GやABC293-Gで出題され、典型アルゴリズムとなりつつあります。 一度理解すれば納得しやすいアルゴリズムなのですが、初めて学習したときに巷の図では個人的に分かりにくかったのでブログ内で整理してみました。

AtCoder Beginner Contest 292 F - Regular Triangle Inside a Rectangle 解説

はじめに ABC292のF問題で幾何問題が出ました。 自分は他の方と解答アプローチが異なったので解説記事を書いてみます。

Pythonで動くエラトステネスの篩をさらに高速化してみた話

はじめに 以前の記事でエラトステネスの篩を作成しました。 しかしこの篩ではLibrary CheckerのEnumerate PrimesでTLEしてしまいます。 そこで本記事では篩のさらなる改良を目指します。

AtCoder青色になりました

トヨタ自動車プログラミングコンテスト2022(AtCoder Beginner Contest 270)にて、AtCoder開始以来ずっと目標にしていた青コーダーになりました! 初参加から3年少々かかりました。 青コーダーになりました!!!strangerxxxさんのトヨタ自動車プログラミング…

AtCoder上でscikit-learnを使って機械学習してみたい

はじめに 皆さんはAtCoderでscikit-learnが使えるのをご存知でしょうか? 現在*1のAtCoderでは以下のライブラリが利用できます。 numba, numpy, scipy, scikit-learn, networkx 今回はせっかくなのでscikit-learnを利用して問題を解いてみました。 *1:2022年…

Pythonで使えるnext_permutationを実装してみた

今まで配列列挙ではitertools.permutationsに任せきりだったのですが、仕組みを知りたかったので自作してみました。 辞書順で次の組み合わせが欲しいとか、重複なしの組み合わせを列挙したいとか*1、C++に慣れているのでnext_permutation準拠のコードを書き…

AtCoderで始めるCOBOL入門 ~演習編~

はじめに 前々回の記事、前回の記事でCOBOLの基礎知識について記載してきました。 では実際に、AtCoderに登録したら解くべき精選過去問10問ことAtCoder Beginners Selectionの問題を解いていきます。

AtCoderで始めるCOBOL入門 ~演算・関数編~

はじめに 前回の記事ではCOBOLの概要や入出力の方法を記載しました。 本記事はその続きで、COBOLの演算文法や関数を記載します。 前回記事同様、目的はAtCoderの問題を解くことなので、解くのに必要ない仕様についてはほぼ触れません。 また筆者はにわかコボ…

AtCoderで始めるCOBOL入門 ~概要・入出力編~

はじめに 1959年に産声を上げたプログラミング言語であるCOBOLは、今なお世界中で動いています。 しかし今ではレガシーシステムの代表格に取り上げられており、COBOLを使うエンジニアもどんどん高齢化しています。 当然ナウなヤングにバカウケである競技プロ…

scipyで最大流問題を解く

はじめに scipyにはsparse.csgraph.maximum_flowが用意されていて最大流問題が解けるようになっています。 しかしこれといって日本語の解説記事が見当たらないので書いてみます。 docs.scipy.org

いもす法をpythonのclassで書いてみた

はじめに いもす法は割と競プロの中ではメジャーなアルゴリズムですが、毎回書くよりclassで書いたほうが楽じゃないのと思ったけど誰もpythonで書いてなさそうだったので自分で書いてみてみたってやつです。

高速で正しく動くエラトステネスの篩をPythonで書く

はじめに 「エラトステネスの篩 python」で検索すると色々実装されたものが出てきますが、一番上に出てくるページのコードは遅い実装である上にコード自体が間違っているという始末です(どのページかは伏せますがmax=4にすると4が素数判定されるのが1つの反…

scipy.optimize.bisectを使った二分法を競プロで使う

はじめに 今日のyukicoder contest 246で関数の二分法に関する問題が出ました。 競プロPython勢ではAtCoderのD - 高橋君ボール1号をニュートン法(scipy.optimize.newton)で解く方法が有名かとは思いますが、二分法でもscipyのモジュールで解けるようなので使…

scipyでABC061 D Score Attackを解こうとして解けなかった話

はじめに 今までAtCoderをやってきて最短経路問題を避けてきたのですが、レート水色目前にしてようやく重い腰を上げFloyd-Warshall法やDijkstra法などを勉強しました。 その中で最短経路問題を解くのにscipyのライブラリを使えることを知りました。 note.nkm…

AtCoder practice contest B - Interactive SortingをPythonで解く

はじめに AtCoder practice contest B - Interactive SortingをPythonで解いた記事が見つからないので、簡単に解説してみます。