mini notes

競技プログラミングの解法メモを残していきます。

JOI 2018/2019 予選 D - 日本沈没 (Japan Sinks)

問題:D - 日本沈没 (Japan Sinks)

解答:Submission #19057982 - JOI 2018/2019 予選 過去問

解答:まずは初期状態の島の個数を数える。これは「i = 0かつa[i] > 0」もしくは「i > 0かつa[i-1] == 0かつa[i] > 0」の時にカウントアップすることで求まる。

その後は標高の低い土地から順番に水に浸すシミュレーションを行う。このとき両脇の土地がどちらも水に浸っていなければ島の数が1つ増え、両脇の土地がどちらも水に浸っていれば島の数が1つ減る。またそれ以外の状態での島の数の変動はない。

なお、標高が同じ土地のシミュレーションは同時に行わなくてはならないのは注意が必要である。