Cover Image for [Boot camp for Beginners] C - Prison [Rust]

[Boot camp for Beginners] C - Prison [Rust]

概要

AtCoder Problems: Boot camp for Beginners をRustで解いてみる

学んだことmemo

  • まずカードの一覧を作る
    • (1..=n) で作って vec にすれば良さそう
    • rust の range は慣れてくると使いやすくてとてもいい
  • 通れるかどうかのチェックは?
    • (l, r) に対してカードがその範囲内にあるかどうかを all でチェックすればいい
  • これで終わるかと思ったら流石にそんなことなかった
  • なぜTLEになるのか
    • n * m が最大の計算量になるが、10^10 になるので多かった

  • 仕切り直してロジックを考え直す
  • (l, r) のリストを重なる範囲だけマージしていけば、全て通れる範囲が決まるはず
  • 最小の範囲がもとまれば、min_l - min_r + 1 でその範囲に入る個数は求められる
  • min_l - min_r + 1 がマイナスになるパターン = 1枚も全て通れるものがないパターン が漏れてそう
    • そのチェックを足したら通った