abc466_d
Placing Rooks の解説
D問題 by @ohnuma
解説
- 上からRi行目のマスに置かれているコマをすべて取り除く。
- 左からCi列目のマスに置かれているコマをすべて取り除く。
これらをすることでそれより前にRi, Ciにおいた操作は無駄になります。 よって、操作をうしろからみていって、消されないところに駒をおけているかをチェックしながら駒をおいていけば良いです。
fn main() { input! { n: usize, m: usize, mut rc: [(Usize1, Usize1); m] } rc.reverse(); let mut ans = 0; let mut row = vec![false; n]; let mut col = vec![false; n]; for &(r, c) in rc.iter() { if !(row[r] || col[c]) { ans += 1usize; } row[r] = true; col[c] = true; } println!("{}", ans); }