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
今日のコミット。