3匹の猫

みみねこの競プロ精進メモ

AtCoder Beginner Contest 205参加記(~E問題)

あんまりおもしろくなかったな。知識不足
f:id:mmnkblog:20210613230226p:plain

A - kcal

1mLあたり\dfrac{A}{100}kcalなので、これをB倍すればBmLあたりのカロリーが求まる。答えは\dfrac{AB}{100}。答えは小数値で求めることに注意。計算量はO(1)

B - Permutation Check

(1, 2, \dots, N)Pとする。Pを並べ替えてAに一致させるのは実装が大変なので、APにすることを考える。Pは昇順に並んでいるのでAをソートしてPに一致するか判定するだけでよい。計算量はO(N\log N)

C - POW

クソ問
愚直に計算すると時間がかかるのでA, B, Cの正負ゼロで場合分けする。A=Bならイコール、どちらかがゼロならもう片方の正負、負の数が含まれるならCの偶奇で場合分け。計算量はO(1)

上記の考察より、Cの偶奇さえわかればよいのでC=1またはC=2としてそのまま計算し値を比較する方法でも良い。

D - Kth Excluded

正整数xに対して、K_i番目の正整数はx以上かを判定できれば、このx1から(10^{18}+10^5+1)の範囲で二分探索することで答えを求められる。
判定問題を解く。x未満の正整数の中にAの要素がいくつ含まれるかをlower_boundで求めてその個数をcとすると、xx - c番目の数であるとみなすことができる。よってx - c \le K_iならYesとなる。
計算量はO(N+Q\log A_i \log N)

E - White and Black Balls

解けなかった。
動的計画法を考える。i個ボールを置いて、そのうちj個が白いボールだったとき
dp[i+1][j+1] = dp[i][j] + dp[i][j+1]
と更新できるはず(i個目に白いボールを置くとき+i個目に黒いボールを置くとき)。更新するときに白と黒のボールの個数の制約と問題文の条件を確認し、i, jが条件を満たしていないならdp[i][j] = 0にする。これで計算量O(N^2+M)。ここから高速化できるのか、それとも違う解法なのかは分からない。

感想

すぐレート下がるなあ