AOJ埋め12

1998年のセット.とりあえずこれでアジア地区の過去問については一通り触れたことになります.

1201 Lattice Practices

DFSで試すんだけど,回転と鏡像で同一になるものはカウントしてはいけないので適当に正規化しないといけない.
DFSにおいては,10個の格子中5個を下側にセットしたら,上側の5個は一意に定まるか型が合わないかのどちらかが定まるので,下側だけ考えてやればよい.
与えられる格子はどれも異なっていることから,10個のうちどれかは対称でないのでそれをv[0]として,v[0]が下側の,さらに上から1,2,3行目にあるとした.また,v[0]についてのみ左右対称な置き方を試さないことにした.これで回転,左右の鏡像については大丈夫になる.
v[0]が3行目にある場合に上下の鏡像が数え上げられてしまうのだけど,めんどいので過去に見たパターンをsetで保持して弾くようにした.

1202 Mobile Phone Coverage

交差部分があったら↓みたいに交差の無いものに分解してやる,という操作を,交差が無くなるまで繰り返した.

等号周りの処理が結構面倒だった.

1203 Napoleon's Grumble

O(N^2)で候補となる文字列とignoreすべき文字列を集める.

1204 Pipeline Scheduling

パイプラインとかえええーと思ったのだけど,サンプルを見て分かるように,与えられた並びを10個conflictしないように並べるときの最小の列の長さを求めるだけ.
reservation tableでは各列においてちょうど1個しかXが無いことに気をつける.
素直にDFSで調べ上げてやればよい.