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 * M
はA
とB
の両方に含まれていないと0
N * M - 1
はA
かB
の一方にしかないことがありえる (N * M
と同じ行または同じ列の場合)- ……この調子で降順に確定していくことを考えた
(1..=N * M).rev()
で走査することを考えるA
とB
の両方にあれば位置が決まるA
にあってB
にない場合はB
の既に出てきた列にある (その数字よりも大きい数字のある列)A
になくてB
にある場合はA
の既に出てきた行にある (その数字よりも大きい数字のある行)- 両方にない場合は
A
とB
の既に出てきた行・列のどこかであり、かつまだ使われていないマスにある - あとはこれらをすべて掛け算すれば求められる
- 降順に確定していくところくらいまでは分かったけどまだ自力で解くにはすこし厳しそうだ
- ギリ青 diff
今日のコミット。