Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

AtCoder Beginner Contest 142

f:id:mdstoy:20190928225952p:plain

↑戒め。

4完、3WA、1TLE。

Dまで11分で解けてたのに、作ってあった素因数分解の関数にいろいろまずいところがあって、そこから23分+ペナ20分を溶かすという情けない結果になってしまいました。

各問題

A - Odds of Oddness

「1からNまでの間の奇数の個数」÷N、をやるだけです。答えを実数で出さなければならないことに注意することと、Nをintじゃなくてdoubleで受け取って計算しようとすると結果がおかしくなることに注意します。(ちょっとハマりました)

B - Roller Coaster

ひとりずつ基準値をクリアしているかどうか確認するだけです。forとifを使えれば解ける、This is B問題ですね。

C - Go to School

「教室にAi人の生徒たちがいた」というのはつまり、その生徒がAi番目に登校したことを表します。Aiとiを紐付けてからAiでソートすれば登校順に並ぶので、あとはソート後のiを順に出力していけばいいです。

D - Disjoint Set of Common Divisors

AとBの最大公約数を取って、それを素因数分解して、素因数の種類(と、1の分で+1)が答えです。 例えば入力例1ならgcd(12, 18)が6で、素因数分解して2*3で、1, 2, 3が互いに素、という具合です。

ここまで11分でできていたのに、冒頭で述べたとおりの有様でかなりの時間を無駄にしました・・・。

作ったライブラリはちゃんとテストしましょうね・・・。

E - Get Everything

DPなのは容易にわかったのですが、どのように状態を定義すればよいのかを見つけられず・・・。

F - Pure

トポロジカルソートとか閉路検出とかでググってなんとかしようとするも、時間切れでした。

まとめ

前述の通り都合43分のロスで、パフォ250くらい持っていかれました。痛恨・・・。 あと最近Eが解けてない・・・。たまにはEまでいけないとジリジリとしか回復できないですね。

まあライブラリのバグを見つけられたことと、Dまで実質11分で解けていたことで、今日はよしとします。 下げなくていいレートを下げてしまったのでよくないんですけどね。on_

f:id:mdstoy:20190928233406p:plain