競技プログラミング

分割数 p(n) を高速に求める

競プロにおいて分割数は を 個の非負整数の和で表す方法の数 (ただし, 順番は区別しない) であり, 計算量オーダーが である dp が(蟻本などに載っており)有名である しかし, 一般に数論の世界で分割数というと を自然数の和で表す方法 であり, である これは…

AHC011 参加記

絶対いらないけど色変したしてきとうに 順位表 1152826674点で228位でした 二時間ちょいくらいで取って色も変わったのでコスパ的にまぁまぁかなという気持ち やったこと 問題の第一印象 とても面白そう + めちゃくちゃめんどくさそう 初回提出 こんかいの自…

包除原理の基礎的な話

はじめに 包除原理を知っていますか? 私は知っています 知ってはいますが, 全然使いこなせていないし使うたびに頭が壊れてしまって 「答えが合ったので, ヨシ!!」と提出してしまうので, ちゃんと勉強しようと思いました この記事はそのまとめです 本文 とりあ…

Cipolla's algorithm (素数 mod 上の平方根)

はじめに 素数 mod 上の平方根を求める方法を勉強したので, 軽くまとめます 体とか同型とかそういう言葉を使わないように書いていきたいと思っています ちゃんと勉強したい人は 37zigenさんのブログ を読んでください やりたいこと 素数 と 整数 が与えられ…

Meissel–Lehmer algorithm (N以下の素数の数)

はじめに Meissel–Lehmer algorithm ってな~~~に? Library-Checker の問題のひとつ, Counting Primes 以下の素数の個数を求めてください これどうやってやるんですか? ってことで調べたら出てきました 概要 思考をまとめるためにほとんどwiki写しただけ…

たまに見かける三種類の文字の二項演算について

はじめに 三種類の文字 があって 二つの文字 について のとき を返す のとき とも とも異なる文字を返す というような二項演算が出てくる問題をたまに 見かけます こういう問題の解説を見るとよくわからない天才的な変換が書いてあることがしばしばあると思…

【作ってみた】二次元 Disjoint Sparse Table【なにこれ】

導入 訳あってSparse Tableについて調べていたのだが、こんな記事を見つけてしまった この記事では「二次元のRmQクエリを高速に処理をする方法」として書かれているが、演算部分を抽象化することにより一般的な冪等半群のクエリを処理することができる二次元…

青コーダーになりたかった

はじめに みなさん色変記事は好きですか? 僕は好きです いろいろな人の、勉強方法・考え方・小ネタ・よくわからないものなど、読んでいてためになったり、そうでなくても面白いですね ということで、このたびAtCoderのレーティングが1600を超え、ついに青コ…

[AtCoder] ABC 182 D - Wandering

言いたいことはすべてコードに書きました (C++です) 解説 とそれを踏まえての スタイリッシュアクション です。

ざっくりNIMの説明と証明

はじめに 前日、AtCoder Regular Contest 105 で、NIMを応用させた問題が出題されました それを受けて、この機会に復習することにしました この手の知見をまとめた記事は飽和しているかと思いますが、自分の思考を整理するためにも記事にしてみました NIMに…

AtCoder Beginner Contest 170 解説

書き方わからないんですが、お試しで書いてみよう というお気持ちです 何故か全問書いた上にコードも載せてるので1個1個がめっちゃ短いです 解答例のコードはC++です ABC170 A問題 Five Variables B問題 Crane and Turtle C問題 Forbidden List D問題 Not Di…