AtCoder Beginner Contest 205参加記(~E問題)
あんまりおもしろくなかったな。知識不足
A - kcal
mLあたりkcalなので、これを倍すればmLあたりのカロリーが求まる。答えは。答えは小数値で求めることに注意。計算量は。
B - Permutation Check
をとする。を並べ替えてに一致させるのは実装が大変なので、をにすることを考える。は昇順に並んでいるのでをソートしてに一致するか判定するだけでよい。計算量は。
C - POW
クソ問
愚直に計算すると時間がかかるのでの正負ゼロで場合分けする。ならイコール、どちらかがゼロならもう片方の正負、負の数が含まれるならの偶奇で場合分け。計算量は。
上記の考察より、の偶奇さえわかればよいのでまたはとしてそのまま計算し値を比較する方法でも良い。
D - Kth Excluded
正整数に対して、番目の正整数は以上かを判定できれば、このをからの範囲で二分探索することで答えを求められる。
判定問題を解く。未満の正整数の中にの要素がいくつ含まれるかをlower_boundで求めてその個数をとすると、は番目の数であるとみなすことができる。よってならYesとなる。
計算量は。
E - White and Black Balls
解けなかった。
動的計画法を考える。個ボールを置いて、そのうち個が白いボールだったとき
dp[i+1][j+1] = dp[i][j] + dp[i][j+1]
と更新できるはず(個目に白いボールを置くとき+個目に黒いボールを置くとき)。更新するときに白と黒のボールの個数の制約と問題文の条件を確認し、が条件を満たしていないならdp[i][j] = 0
にする。これで計算量。ここから高速化できるのか、それとも違う解法なのかは分からない。
感想
すぐレート下がるなあ