スポンサーリンク

【ABC127】AtCoder Beginner Contest 127 A,C問題 解答・解説【Python】

スポンサーリンク
スポンサーリンク
この記事は約2分で読めます。

A – Ferris Wheel

C – Prison

方針

・全ゲートをパスするIDの区間を作る

・区間の左側は1からスタートして最大値を、区間の右側はnからスタートして最小値を更新して区間を狭めていく

・区間内の数字が全ゲートをパスするIDであるため、区間に含まれる個数を出力

・左側の最大値が、右側の最小値よりも大きくなった場合は0を出力

※全ゲートが許可するIDの区間が重なっている必要があるが、以下の例ではゲート1とゲート2の両方をパスするIDは存在しない。

例:ゲート1をパスするIDが8~10、ゲート2をパスするIDが3~5の場合

→ゲート1(8,10):×××××××(○)○○ :(○)は左側の最大値8

→ゲート2(3,5) :××○○(○)××××× :(○)は右側の最小値5

解答

コード・コメント

コード

参考

区間に関する問題なので、累積和に関する情報を事前に持っていると良いかもしれません。

累積和を実装して問題を解くことができずとも、考え方に触れておくだけで別の問題で解答に至りやすくなるのではないかと思います。

最後の”ans”で区間内の個数を計算する部分などはこちらの記事の2-2の項目に記載されています。

累積和を何も考えずに書けるようにする! – Qiita

その他

他の解説記事一覧

AtCoder Beginner Contest 解答・解説記事一覧

コメント