No.2669 Generalized Hitting Set
タグ : / 解いたユーザー数 19
作問者 : suisen / テスター : cureskol chineristAC ygussany
注意
本問題の実行時間制限および メモリ制限 は厳しめに設定されているため、高速な言語の使用を推奨します。
想定解の PyPy 実装の実行時間は約 3,500 ms, 実行時使用メモリ量は約 210 MB です。また、想定解の Java 実装の実行時間は 約 2,000 ms, 実行時使用メモリ量は約 140 MB です。特に、PyPy については実行時間制限とメモリ制限の両方が非常に厳しくなっているので他の言語の利用を強く推奨します。
問題文
正整数 $n,m,k$ および集合 $S _ 1, S _ 2, \ldots, S _ m\subseteq \lbrace 1,2,\ldots,n\rbrace$ が与えられます。ここで、各 $S _ i$ の要素数は $k$ 以上であることが保証されます。
集合 $T\subseteq\lbrace 1,2,\ldots,n\rbrace$ に対して、$\lvert S _ i\cap T\rvert \geq k$ を満たす $i\in\lbrace 1,2,\ldots,m\rbrace$ の個数を $f(T)$ とします。
正整数 $p\in\lbrace 1,2,\ldots,m\rbrace$ に対して、$f(T)\geq p$ なる集合 $T\subseteq\lbrace 1,2,\ldots,n\rbrace$ の要素数の最小値を $g(p)$ とします。
全ての $p=1,2,\ldots,m$ に対して $g(p)$ を求めてください。
入力
入力は以下の形式で標準入力から与えられます。
$n\ m\ k$ $S _ 1$ $S _ 2$ $\vdots$ $S _ m$
ここで $S _ i$ は 0
, 1
からなる長さ $n$ の文字列として与えられます。$S _ i$ の $j\ (1\leq j\leq n)$ 文字目が 0
のときは $j\notin S _ i$ であることを、1
のときは $j\in S _ i$ であることを表します。
- 入力される数値は全て整数で与えられる。
- $1\leq k\leq n\leq 24$
- $1\leq m\leq 3\times 10 ^ 5$
- $S _ i$ は
0
,1
からなる長さ $n$ の文字列 - $S _ i$ は
1
を $k$ 個以上含む
出力
$m$ 行出力してください。$p\ (1\leq p\leq m)$ 行目には $g(p)$ の値を出力してください。
$m$ 行目の出力の後も改行してください。
サンプル
サンプル1
入力
5 4 2 11001 00101 01110 10110
出力
2 2 3 4
この入力は $n=5,\ m=4,\ k=2$ および $S _ 1 = \lbrace 1,2,5\rbrace,\ S _ 2 = \lbrace 3,5\rbrace,\ S _ 3 = \lbrace 2,3,4\rbrace,\ S _ 4 = \lbrace 1,3,4\rbrace$ を表します。
例えば $T = \lbrace 3,4\rbrace$ とすれば、$S _ 1\cap T = \emptyset,\ S _ 2\cap T = \lbrace 3\rbrace,\ S _ 3\cap T = \lbrace 3,4\rbrace,\ S _ 4\cap T = \lbrace 3,4\rbrace$ より $\lvert S _ i\cap T\rvert \geq k$ を満たす $i$ は $i=3,4$ の $2$ つであり、即ち $f(T) = 2$ です。$T = \lbrace 3,4\rbrace$ は $f(T) \geq 2$ を満たす $T$ のうち要素数が最小であることを示せるので、$g(2)=2$ となります。また、この $T$ は $f(T) \geq 1$ を満たす $T$ のうち要素数が最小のものの一つでもあるため、$g(1) = 2$ となります。
$g(3)$ について、$T = \lbrace 3,4,5\rbrace$ は $f(T) \geq 3$ なる $T$ のうち要素数が最小なので $g(3) = 3$ です。
$g(4)$ について、$T = \lbrace 1,3,4,5\rbrace$ や $T=\lbrace 1,2,3,5\rbrace$ は $f(T) \geq 4$ なる $T$ のうち要素数が最小なので $g(4) = 4$ です。
以上をまとめると $g(1) = 2,\ g(2) = 2,\ g(3) = 3,\ g(4) = 4$ となります。
サンプル2
入力
3 7 1 001 001 010 010 011 101 110
出力
1 1 1 1 2 2 2
$S _ i = S _ j$ なる $i,\ j\ (i\neq j)$ が存在することがあります。
サンプル3
入力
10 10 5 1011101111 1110111101 0000110111 1010100111 0110110101 1111011101 0100111101 1011101101 1111011110 1011011011
出力
5 5 5 5 6 6 6 7 7 7
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。