外部サイトへ移動します

リンク先の URL を確認してから開いてください。

別タブで開く

1000000D Hypercube 別方針

wasd314 ·

解説している問題 1000000D Hypercube

公式解説と異なる方針を紹介します.

最終的に得られる式は同じですが,包除原理を用いることで直接導出します.

実数 ss に対し,NN 次元空間内で

{∀i.  xi≥0x1+⋯+xN≤s\begin{cases} \forall i.\; x_i \ge 0 \\ x_1 + \dots + x_N \le s \end{cases}

を満たす領域の体積を V(s)V(s) とします.

V(s)={sN/N!(s≥0),0(s<0)V(s) = \begin{cases} s^N/N! & (s \ge 0), \\ 0 & (s < 0) \end{cases}

です.

求める体積 VV は

{∀i.  xi≥0x1+⋯+xN≤K\begin{cases} \forall i.\; x_i \ge 0 \\ x_1 + \dots + x_N \le K \end{cases}

に加えて ∀i.  xi≤1\forall i. \; x_i \le 1 を満たす領域の体積です.各 ii に対する条件 xi≤1x_i \le 1 たちに対して包除原理を適用します.NN 個中 kk 個の条件に違反し他の条件を無視したとすると,違反した ii に対して xi−1x_i - 1 を xix_i と置き直すことで条件は

{∀i.  xi≥0x1+⋯+xN≤K−k\begin{cases} \forall i.\; x_i \ge 0 \\ x_1 + \dots + x_N \le K - k \end{cases}

となり(境界の差異は体積 00 なので無視できます),これを満たす領域の体積は V(K−k)V(K - k) です.よって

V=∑k=0N(−1)k(Nk)⋅V(K−k)=∑k=0K(−1)k(Nk)⋅V(K−k)(∵k>K⟹V(K−k)=0)=∑k=0K(−1)k(Nk)(K−k)NN!\begin{aligned} V &= \sum_{k = 0}^N (-1)^k \binom{N}{k} \cdot V(K - k) \\ &= \sum_{k = 0}^K (-1)^k \binom{N}{k} \cdot V(K - k) \qquad (\because k > K \Longrightarrow V(K - k) = 0 ) \\ &= \sum_{k = 0}^K (-1)^k \binom{N}{k} \frac{(K - k)^N}{N!} \\ \end{aligned}

です.