SRM 386 250pt: CandidateKeys
問題概要
DBの表がある。各列の組み合わせを抽出したものが各行に対してユニークに定まるのであれば、その組み合わせを主キーと呼ぶことにする。極小な主キーの組み合わせとして、最大の数と最小の数を求める問題。行数Rは50以下、列数Cは10以下。
考えたこと
- 問題がよく分からない。
- しばらく経ってようやく問題を理解した。で、どうするか。
- 主キーの組み合わせを列挙するのはO(2^C * C * R)でいける。
- 極小の判定どうしよう。グラフ構成するのとか面倒だからやりたくない。
- いやいや、グラフ構成する位なら候補数Nに対してO(N^2)でいけるじゃないか。
- 後は書くだけ。サンプル通った。投げた。WA。
- ビット回す範囲が2^Rまでになってた。2^Cに修正して無事AC。本番でこの間違いしたら悔しいだろうなあ。
SRM 386 500pt: PolygonCover
問題概要
凸多角形(頂点数N<=15)が与えられる。この頂点を複数個選んでできる多角形を集めて頂点を被覆したい。面積の和を最小化する問題。ただし面積が重複している部分は複数回カウントする。