ferinの競プロ帳

競プロについてのメモ

2020-01-01から1ヶ月間の記事一覧

Mujin Programming Challenge 2018 G - 移動

問題ページ 数式を用いて問題を整理します.ベクトル に対して, となる は何種類ですか?という問題になりました. もし, が異なる場合は全て違う点に移動するならば, となるような が何種類か数える問題となり,これはcombinationを用いた計算で求めるこ…

COLOCON -Colopl programming contest 2018- Final D - Chaos of the Snuke World

問題ページ 順列を決めたときの転倒数の期待値を考えます. について, を 番目のほうが小さいならば1,それ以外ならば0となる変数とします.このとき,転倒数の期待値は となります.期待値の線形性から と一致します. は が1個成り立つごとに 増えます. …

CODE FESTIVAL 2018 qualA E問題 オレンジとみかん

問題ページ 考えたこと 差がmid以下にできるか?が解ければ,二分探索で解ける 差分を決め打ったところでつらそう min と max を決め打ってみる 全ての人の満足度をこの範囲に収められるか? dp[i人目まで][残りのみかんj個] = 可能か? 普通にやると かかる…

RBSTの使用例

平衡二分探索木できることが多くてよくわからないのでまとめ 平衡二分探索木については プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~ がわかりやすい 平衡二分探索木にモノイドが乗る話については Implicit Treap - 競プロ練習記録 がわ…

ゼータ・メビウス変換とか包除原理とか畳み込みとか

数学的に厳密なことはしりません 高速ゼータ変換/高速メビウス変換 - naoya_t@hatenablog にあるようにゼータ・メビウス変換が色々あって何が何???と思っていたが,ゼータ変換・メビウス変換を理解する - Qiita によるとゼータ変換は半順序集合上で定義…

キーエンス プログラミング コンテスト 2020 E - Bichromization

問題ページ 最小の重み を持つ頂点 について考えてみます.この頂点が隣接する頂点 が より大きい重みしか持たないとします.このとき, を違う色で塗ることは明らかに不可能です.同じ色で塗る場合,別の隣接する頂点へ進む経路で を達成する必要があります…

キーエンス プログラミング コンテスト 2020 D - Swap and Flip

問題ページ 0-originで考えます. 制約からメタ読みするとどうせ かけて列挙するので,並べ替えた後の列で表が赤になるカードの集合を 通りを決め打ちます.「このような並べ方が存在するか?存在するならば何回のswapで達成可能か?」という問題が解ければ…

Codeforces Round #613 (Div. 2) F - Classical?

問題ページ Codeforces #613 (Div. 2) F. Classical? (R2800) - けんちょんの競プロ精進記録 のスタックの中に互いに素なものの個数を数える部分についてちょっと悩んだのでそこだけ書きます. 「スタックの中に が存在する. と互いに素なものの個数を数え…

Codeforces Round #613 (Div. 2) E. Delete a Segment

問題ページ 区間 が与えられたとき,数列 の区間 に+1した数列を考える.そのまま数列をつくるとMLEなので,座標圧縮しておく.区間が交差しているかどうかを考えたいとき, と隣接していると結構大変なので,各端点を2倍して としておくと交差しない区間の…

Codeforces Round #613 (Div. 2) D - Dr. Evil Underscores

問題ページ Trie木を考える.上の桁(Trie木の浅い方)から順番に見て,0にできるならば必ず0にするべきである ( なので). 上から 桁目に0しかない: の 桁目を0にすれば答えの 桁目を0にできる 上から 桁目に1しかない: の 桁目を1にすれば答えの 桁目を0にで…

AtCoder Beginner Contest 147 F - Sum Difference

問題ページ 0-originで考える. より, となる. は一定なので,結局 が取りうる値の種類数を数えられればよいことがわかる. 例として要素を3個 選んだときの について考える.これは となる. が取りうる値は, 以上, 以下となる. は1刻みで値を変えられ…

第6回 ドワンゴからの挑戦状 予選 D - Arrangement

問題ページ 辞書順最小を求めるのときの定石の一つとして,あとの方をうまく並べることで(辞書順最小を無視して)答えとなる要素のうち,最小のものを末尾に追加する操作を繰り返すという貪欲法がある.擬似コードを書くと以下のような感じ. REP(i, n) { R…

AtCoder Beginner Contest 150 F - Xor Shift

問題ページ 関連する問題を一つ示す. 「数列 を 回巡回シフトしたときに に一致するような を求めろ.」 この問題はZalgorithmやKMP法やローリングハッシュなどで解くことができる.ここではZalgorithmによる解法を示す. (適当な区切り文字) と連結した数…

第6回 ドワンゴからの挑戦状 予選 B - Fusing Slimes

問題ページ 答え = (N-1)! * 期待値 期待値 スライム が を通る確率 スライム j が [i,i+1] を通る確率 → j+1~i が j より前に選ばれる確率で 1/(i-j) → jだけの式にしたほうが楽なので変形すると 1/j ~ の後に が来る確率が なのとか立式するパート実質 AG…

バグ記録

AOJICPCを解いてたら思ったより手こずったのでその反省 AOJ2904 GuruGuru RLLLRRR みたいなのを数えて1WA 問題文に書かれていることをちゃんと書く AOJ2846 Slimming Plan 1週目だけで達成できるパターンを忘れてた 二分探索の結果が oxxxxxoooooo みたいな…

Link-Cut tree

木をパスの素集合に分解して,それぞれのパスをスプレー木で表します.各パスの親になる頂点へ向かって辺を貼ることでパス同士の連結関係を表すみたいな感じ.平衡二分探索木で表しているのでsplit/mergeの要領で色々操作ができてうれしい. このスライド が…