5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ARC059-E Children and Candies / キャンディーとN人の子供 解説

5
Last updated at Posted at 2020-01-01

ARC059-E Children and Candiesの解説です。公式解説が少しわかりにくい気がしたので、是非こちらも参考にしてください。

問題概要

$N$ 人の子供たちに $C$ 個のキャンディーを、非負整数個づつ配る。(つまり、1つも配らない子供がいても良い。)
それぞれの子供たちは値 $x_i$ を持っており、子供 $i$ にキャンディーを $k$ 個配った時、子供の「うれしさ」は $x_i^k$ となる。幼稚園の活発度は、子供たちの嬉しさの積として計算される。 $x_i$ が $A_i$ から $B_i$ までの値をとる時、ありうる全ての $x_i$ とキャンディーの配り方について、活発度の総和を求めよ。

部分点解法

この問題は、満点解法も部分点解法と同様な発想をするので、部分点解法から解説します。
部分点では、$A_i=B_i$ から、$x_i$ の値が一意に定まっていることがわかります。
この問題は、次のようなDPで簡単に解けます。
定義:dp[$i$][$j$]= $i$ 番目までの子供たちに $j$ 個のキャンディーを配った時の、そこまでのうれしさの積としてありうるものの総和
初期値:dp[$0$][$0$]=$1$
遷移:dp[$i+1$][$j+k$]+=dp[$i$][$j$]*$x_i^k$
答え:dp[$N$][$N$]
dp[$i+1$][$j+k$]への遷移を計算する時、$i$,$j$以外の情報は必要なく、総和としてまとめて計算していいことさえわかれば、このDPが成立していることがわかると思います。
計算量は $O(NC)$ です。
ここまでは水色程度の人には少し厳しいかもしれませんが、思いついて欲しいところです。

満点解法

満点の制約では、$x_i$ の範囲が最大 $400$ なので、上のDPを全ての $x_i$ の組み合わせに対して行うと計算量が爆発します。
ここで、キャンディーの配り方を固定し、子供 $i$ に配る数を $c_i$ としてみます。
ここで、全ての $x_i$ の組み合わせについての活発度の総和を求めることを考えます。
実はこれの値は、次の値と等しいです。
$\prod_{i=1}^N \sum_{j=A_i}^{B_i} j^{c_i}$
なぜでしょうか。とりあえず可視化してわかりやすくしましょう。
$(A_1^{c_1}+(A_1+1)^{c_1} \cdots B_1^{c_1})(A_2^{c_2}+(A_2+1)^{c_2} \cdots B_2^{c_1}) \cdots(A_N^{c_N}+(A_N+1)^{c_N} \cdots B_N^{c_N})$
これを展開すると、全ての $x_i$ の組み合わせが1度ずつ現れるので、全ての組み合わせについての活発度の総和となります。
このような式変形はあまり珍しいものではないため、多少数学ができればわかると思います。
こう考えると、部分点のDPの遷移を少し変えるだけで満点解法へと拡張することができます。
つまり、dp[$i+1$][$j+k$]+=dp[$i$][$j$]*$(\sum_{l=A_i}^{B_i} l^k)$
とすれば良いです。
このシグマの部分をいちいち計算すると計算量は$O(NC\ max(B_i))$ となり、間に合いません。
そこで、ありうる全ての $l$ と $k$ について、$1^k$ から $l^k$ までの和を前計算で求めておけば、引き算によってシグマの部分の値が $O(1)$ で求まります。
よって、前計算に $O(C\ max(B_i))$,DPパートに $O(NC)$ かかり、合計 $O(C(max(B_i)+N))$ でこの問題が解けました。

おわりに

ABCやAGCには出なさそうな雰囲気ですが、ARCや企業コンにバンバン出そうな雰囲気をした問題なので、企業コンでレート爆上げしたい人はちゃんと押さえておきましょう。
ありがとうございました。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?