CodeChef April Challenge 2020 Div.1
15位…と思ったら今見たら14位になっている(マラソンのrejudge中らしい、今後も変わりそう) 順位表
Mod 1e9+7と998...ばかりで個人的にかなり楽しめたセットでした
STRNO,SQRDSUB
- 簡単枠 同値変形をすると解ける
ANSLEAK
- マラソン枠 高速化+遷移を工夫しただけの山登りで94点
- かなり雑な出来だと思ったが、やり込んだ人が少なかったからかDiv1では8番目の成績
- 時間内に山を登り切れないと踏んで焼きなましに書き換えなかったが、高速化の甲斐あって最後の方は回ループが回っていたので焼きなましにすべきだったね…
REBIT
PPDIV
- 数学問 メビウス関数を使うと包除の部分は取り除けて
が答えになる
- これは愚直に計算すると
- 式の見た目がProject Eulerの知識を要求しそうでやばい
- 冷静に考えてPE典型が800人に解かれるわけないだろ!となり式を睨むと、floorの部分の値で場合分けするいつものやつでに落ちて終了
FCTRE
- 問題文を読むと、木上のMoをやるだけだとわかる
- ところで木上のMoを書いたことがありますか?僕はありません
- それどころか長さ2Nのオイラーツアーすら書いたことがなく…(本当に橙?笑)
- うしさんの記事をガン見、parityを持つ実装を参考にしつつMoを書いてAC(うしさんに、感謝!)
- 提出
LLLGRAPH
- Line Graph何もわからん
- Edmondのアルゴリズムを貼って部分点を通してあとは撤退…
TRIPWAYS
- これ面白かった この記事の本題です
- ↓問題へのリンク
- 形式的冪級数で殴る(い つ も の)
- 次数と日数を対応させた母関数を考えると、スタート地点が、遷移がになる
- DPの部分は、分母をで固定して分子の値を要素として持つと遷移が、DP全体でとなりTLに間に合う
- 結局、「分母が次以下の分数式を冪級数展開した時のの係数を求めるクエリに個答えよ」という問題に落ちる
- →高速kitamasa法で解けた!勝ったな(確信)
- → TLE… (kitamasa法を使った時の計算量はなので、当然落ちる)
- → TLE… (kitamasa法を使った時の計算量はなので、当然落ちる)
- →高速kitamasa法で解けた!勝ったな(確信)
- 線形漸化式、kitamasa法じゃ間に合わない、分母が既に因数分解できている…といえば?
- →部分分数分解!
- maspyさんの記事
- 部分分数分解のO(N2)での実装に関する論文 (流し読んだ感じ分母が1次式の積の場合はmaspyさんの記事と同じ式だった)
- 最初は変数変換の部分をFFTで実装したが、でTLE…(Arbitrary Mod FFTは定数倍が重い…)
- よくよく考えると変数変換はFFTせずとも部分分数分解に必要な次数だけ計算すればよく、そうするとlogが落ちてになる
- 部分分数分解が出来れば、あとは各クエリに対してで答えを求めればよい
- 最終的に全体の計算量はとなり、通る
- 提出 結構勉強になった