AtCoder Regular Contest 099
AtCoder Regular Contest 099に参加しました!
ABC101 beta:
https://beta.atcoder.jp/contests/abc101/beta.atcoder.jp
ARC099 旧版:
arc099.contest.atcoder.jp
ARC099 beta:
https://beta.atcoder.jp/contests/arc099/beta.atcoder.jp
解けた問題だけ解説をしていきますー
要項
AtCoder Beginner Contest 101 / Regular Contest 099
rated 1200 / 2800
6/23(土) 21:00 ~ 22:40 (100分)
100-200-300-500-700-1200 (6問)
ペナルティ: 5分
方針
3完、できれば早解きしたい!
A - Eating Symbols Easy
愚直にシミュレーションすると良いです。
実際に値0から始めて、+が出てきたら+1、-が出てきたら-1すれば値が求められます。
B - Digit Sums
はに対して次のような操作をすることで求められます。
求めた結果をとします。最初、です。
- にを10で割った余りを追加する
- を10で割る
この操作により、毎回には各桁の値が追加されるので最終的にになります。
後は割れば求まります。
C - Minimization
まず、数列の全ての値を同値にすることと、選択した全ての値は最小値になることから、最終的に全ての値が1になることが分かります。
ここで、まずあるに対しとの両方を含むような選択の仕方をしないと仮定します。
この時、からの間に最小値があると仮定するとからまでの間には最小値は存在しないので、全ての値を同値にすることはできません。
逆も同様なので、つまり任意のに対しとの両方を含むような選択の仕方をしています。
ここで、同じ範囲を何度も選択するのは無駄なので、なるべく重複要素が無いようにすると、例えばの時は1-4、4-7、7-10のように重複部分は1個までにしたいです。
また、この選択を行う時、常に最小値が入っている範囲を最優先に操作を行っていけば全ての値が最小値になるので、これが最適です。
ということは、この問題は次のように置き換えられます。
テープ同士を長さ1の糊しろで繋いでいくとき、繋がったテープの長さが以上になるためには最低何枚のテープが必要か?
ということは、これを解くとより、切り上げ処理を加えてが答えになります。
結果
oxxx 1完(300点) 32:34(2WA)
800位 パフォーマンス: 1083
レート: 1847→ 1789(-58)
感想
Cが数学、Dが全く解けない問題で泣くしかなかったです。
ちなみにDですが、番目のすぬけ数をとするとき、はかのどちらかです。
なので愚直に解ける……らしいのだが証明が全く分からない!
無理!