5完
各問題
A - Arithmetic Progression
(今どきはどうだか知りませんが昔の)初心者向けプログラミング書籍に必ず載っていたような for
の練習問題!!
for (int i = A; i <= B; i += D) cout << i << " "
とします。
B - Append
空の vector
を用意しておき、1
のクエリの時は x
を emplace_back
すればよく、2
のクエリの時は v[n - k]
(n
はその時点での配列の長さ)を出力すればよいです。
C - Divide and Divide
ぜんっぜん、わかりませんでした。
実験したら規則性が見つかったのでそれに沿ってプログラムを書いたら通りました。
まったくもって解けたとはいえない...。
D - Super Takahashi Bros.
i
から i + 1
に重み A
の辺を、i
から X_i
に重み B
の辺を張り、ダイクストラします。以上。
E - Mancala 2
atcoder::lazysegtree
を使って殴ります。以上。
F - S = 1
点と直線の距離の公式と、それが 2 になることから Bx - Ay = 2
となるような整数の (x, y)
があればよいとわかり、ここから Ay % B = B - 2
となるような Ay
があればよいと分かったところで、時間的にも能力的にも息絶えました...。ぐぬぬ。
いや、上記方針が正しい道なのかはわかってませんが。
まとめ
C が全く分からなかったわりに、D, E が(道具の使い方さえ分かっていれば)やるだけの問題で、なんだこれとなってます。