ARC224 D - Angst for All Pairs
全ペアへの苦悩
考え方
ある数に着目し、各カードにその数が書いてあれば 1、書いていなければ 0 を対応させる。
すると、書き込みパターンは $N$ 桁の二進数で表現できる。
条件の、片方のみが書かれているカードが存在というのは、この二進数が異なることに他ならない。
これに気づけば、ただの簡単な貪欲法である。
$0$ から $2^N-1$ までの書き込みパターンの中で、1 が少ないものを桁数が多い数に割り当てればよい。
1 の個数が $i$ 個である書き込みパターンの個数は、二項係数 ${}_N\mathrm{C}_i$ として求められる。
$0$ から $2^N-1$ までを全部使い切っても足りない場合は、不可能なので $-1$ を出力。
同じ桁数のものをまとめて処理すれば高速であるが、愚直にやっても $O\left(\sum K\right)$ なので十分間に合う。
入力例1での動作
$1$ つ目のテストケースのみ考える。
入力を受け取る。
n: 3
k: 5
result=0 とする。
まず、$i=0$ の場合を考える。
カードを $0$ 枚使うパターンは、${}_3\mathrm{C}_0=1$ 個ある。
このパターンを、まだ割り当てていない最大の値 5 に割り当てる。
カードを $0$ 枚使い、5 は $1$ 桁なので、result に $0\times 1=0$ を加える。
k=4 となる。
次に、$i=1$ の場合を考える。
カードを $1$ 枚使うパターンは、${}_3\mathrm{C}_1=3$ 個ある。
これらを、4, 3, 2 に割り当てる。
いずれも $1$ 桁なので、result に、
$$
1\times 1+1\times 1+1\times 1=3
$$
を加える。
result=3, k=1 となる。
次に、$i=2$ の場合を考える。
カードを $2$ 枚使うパターンは、${}_3\mathrm{C}_2=3$ 個ある。
しかし、まだ割り当てていない値は 1 だけなので、$1$ パターンだけ使用する。
1 は $1$ 桁なので、result に $2\times 1=2$ を加える。
result=5, k=0 となる。
すべての値への割り当てが終わったので、答えは $5$ である。
注意点
答えは、int 型からはみ出る。
long long 型を用いること。
別解
特になし。