AtCoder Beginner Contest ABC405 解法メモ
文中で使用しているのは、PythonライクでAtCoderに最適な言語の1つNimです
ABC405
ABC405A - Is it rated?
解法
R in 1600..2999 and X==1
もしくは、
R in 1200..2399 and X==2
であればYes、そうでなければNo
ACコード
ABC405B - Not All
解法
A.toHashSet.lenをみていけばよい
ACコード
メモ
お決まりで、「以下の条件が満たされるように」に誤読
Seqにもpopがあるが、Dequeでもよい
ABC405C - Sum of Product
解法
求める値に対して、
そこから
したがって、
(A.sum^2-A.mapIt(it^2).sum) div 2
が答え
ACコード
メモ
求める値の数式を、
...
となるので、累積和として
c=A.cumsummedとすれば
(1..N-1).toSeq.mapIt(c[it-1]*A[it]).sum
と書ける
ABC405D - Escape Route
解法
各非常口を始点としてBFSすればよい
入力後、Eの座標をすべてとっていき、
最初にそれをすべて入れたDequeを用意、
現在位置から上下左右したときに、行先の
すべて書き替割った後の
ACコード
メモ
入力例をよく見ず、Eが複数あることを見落とした
Eが複数あったので、BFSを一からやりなおすように組んでしまい、TLE
答えに必要なものから考えると、Eからの距離を保持する必要すらない
ABC405E - Fruit Lineup
解法
初めに、リンゴ
一番左端のブドウの位置iに注目すると、
とり得る範囲は左から
それより左側にあるリンゴとバナナの個数
その右側のバナナの個数
これは重複組合せで、modint998244353として階乗を
for i in A+1..A+C+1:
a+=f[(i-1)+B]/f[i-1]/f[B]*f[A+C-(i-1)+(D-1)]/f[A+C-(i-1)]/f[D-1]
が答え
事前にmodint998244353で
ACコード
メモ
情けないことに、重複組合せが計算できない
Discussion