blog.bouzuya.net

2022-07-05 キーエンス プログラミング コンテスト 2019 の D を解いた

キーエンス プログラミング コンテスト 2019 の D を解いた。

  • D - Double Landscape https://atcoder.jp/contests/keyence2019/tasks/keyence2019_d
    • 提出: https://atcoder.jp/contests/keyence2019/submissions/33000102
    • 解説 AC
    • 1..=N*M をひとつずつ配置するので A に重複があるなら 0 で終わり
    • B も同様に検査する
    • 最大値である N * MAB の両方に含まれていないと 0
    • N * M - 1AB の一方にしかないことがありえる (N * M と同じ行または同じ列の場合)
    • ……この調子で降順に確定していくことを考えた
    • (1..=N * M).rev() で走査することを考える
    • AB の両方にあれば位置が決まる
    • A にあって B にない場合は B の既に出てきた列にある (その数字よりも大きい数字のある列)
    • A になくて B にある場合は A の既に出てきた行にある (その数字よりも大きい数字のある行)
    • 両方にない場合は AB の既に出てきた行・列のどこかであり、かつまだ使われていないマスにある
    • あとはこれらをすべて掛け算すれば求められる
    • 降順に確定していくところくらいまでは分かったけどまだ自力で解くにはすこし厳しそうだ
    • ギリ青 diff

今日のコミット。