れとろのメモ置場

とあるSEのメモ置場

AtCoder Beginner Contest205

AtCoder Beginner Contest205に参加しました。

結果

A,B,C問題の3問正解ででした。 (レーティングの更新がまだなのでパフォーマンスは不明) C問題で普段より苦戦しすぎたなあ

A - kcal

問題文通りに計算をする。注意点は、小数点が出てくる可能性があるので変数は整数型じゃなくて浮動小数点を扱えるものにするのにするくらいかなあ。

B - Permutation Check

やり方は色々あるけど、Aをソートしてi番目がiになっているかどうかで判断すれば良さそう。他にはiが何個あるか数えて1以外の場合はNoになるとか、setに入れて要素数がNになっているかどうかで判断するとか色々解き方はありそう。

C - POW

問題文のとおりに計算すると変数が扱える値以上の数値になりそうなので愚直に計算するのは良くなさそう。Pythonなら扱える数値の上限はないけど試しに提出したらTLEになった。累乗計算はそこまで早いわけじゃなさそう。
真面目に考察すると、Cが偶数のときは結果が必ず正になるからAとBの絶対値の大小比較の問題になる。 Cが奇数のときはAとBの大小を比較すればいい。累乗してもAとBの大小関係は変わらない。

D - Kth Excluded

解けそうで解けなかった。
制約的に前から順に数え上げるのはTLEになるのが予想できるので何かしら省略する工夫が必要そう。
Kが与えられたときにK以下の最大のAの値を二分探索で探せば高速にK以下かつAに含まれている数の個数がわかりそう(Aのインデックス=Aに含まれるK以下の数の個数になる※1-インデックスの場合。0-インデックスの場合は1ズレる  であってると思う)
後はKから順番にAに含まれて不足している個数分Kから数えれば答えになりそう。 でも結局二分探索後の処理がうまく実装できなかった。