AtCoder Beginner Contest 110
AtCoder Beginner Contest 110 (ABC110) の解説です。
AtCoder Beginner Contest 110 旧版
AtCoder Beginner Contest 110 beta版
解けた問題だけ解説をしていきますー
要項
AtCoder Beginner Contest 110
rated 1200
9/23(日) 21:00 ~ 22:40 (100分)
100-200-300-400 (4問)
ペナルティ: 5分
方針
全完
A - Maximize the Formula
この操作を検討すると、変数についてという形になります。
これはという形になるので、要するに一つだけ10倍してから総和するということになります。
当然、最も大きい数を10倍するべきなので、答えは最も大きい数を10倍してから全部足した値です。
B - 1 Dimensional World's Tale
まず、を、をと考えても一般性を失いません。
この時、あるについて任意のにおいてが成り立てば良いことになります。
これはを用いてと表せるので、後はかどうかさえ判定すればにすれば成立します。
C - String Transformation
先に、条件を満たさない場合を考えます。
これは、あるであってかつである時、またはその逆です。
これは、各アルファベットについてどれに対応させたかを覚えておき、矛盾が生じたらNoを返せば良いです。
矛盾が無ければYesです。
D - Factorization
とします。は素数とします。
つまり、を素因数分解する訳ですね。
その時、数列に各素因数を割り当てるとこれは条件を満たします。
逆に、そうではない場合はこのような数列は条件を満たしません。
よって、まず先にとしておき、各素因数を割り当てるやり方が何通りあるか考えます。
まず、当たり前ですがにおいてとは互いに素ですから、独立して計算することができます。
次に、あるについて考えてみましょう。として表します。
この時、個のを個の数列に割り振る組み合わせなので、重複組み合わせを用いてとなります。
よって求める答えはとなります。
ここで、注意点としてどうやってを求めるかを考えましょう。
まず、今回素因数分解という性質からとなることが分かっています。
ということは、は高々30で抑えられるので、で求めるアルゴリズムを用いると良いです。
この時の計算量となります。
ただし、逆元を求めて計算すると計算量となります。
結果
oooo 4完(1000点) 1:37-6:29-21:49-72:24 / 72:24
132位
感想
おいB問題、問題バグでWA出たぞふざけんな
結論: これはunratedですね……。