atcoder#ARC059C. [ARC059E] キャンディーとN人の子供

[ARC059E] キャンディーとN人の子供

配点 : 800800

問題文

競プロ幼稚園には11NNの番号がついたNN人の子供がいます。えび先生は、区別できないCC個のキャンディーを子供たちに分配することにしました。子供iiはしゃぎ度xix_iの時、キャンディーをaa個もらうと子供iiうれしさxiax_i^aになります。幼稚園の活発度NN人の子供たちのうれしさになります。各子供にキャンディーを非負整数個配ってC個配りきる方法それぞれに対して幼稚園の活発度を計算して、その総和を子供たちのはしゃぎ度x1x_1,..,xNx_Nの関数とみてf(x1,..,xN)f(x_1,..,x_N)とおきます。Ai,Bi(1iN)A_i,B_i (1 \leq i \leq N)が与えられるので、

109+710^9+7で割ったあまりを求めてください。

制約

  • 1N4001 \leq N \leq 400
  • 1C4001 \leq C \leq 400
  • 1AiBi400(1iN)1 \leq A_i \leq B_i \leq 400 (1 \leq i \leq N)

部分点

  • Ai=Bi(1iN)A_i=B_i (1 \leq i \leq N) を満たすデータセットに正解した場合は、部分点として400400 点が与えられる。

入力

入力は以下の形式で標準入力から与えられる。

NN CC

A1A_1 A2A_2 ... ANA_N

B1B_1 B2B_2 ... BNB_N

出力

の値を109+710^9+7で割ったあまりを出力せよ。

2 3
1 1
1 1
4

Ai=BiA_i=B_iなので部分点の条件を満たします。 子供11,22はしゃぎ度が共に11のもの(f(1,1)f(1,1))を考えればよく、この時、

  • 子供1100個,子供2233個のキャンディーをあげると、幼稚園の活発度1013=11^0*1^3=1
  • 子供1111個,子供2222個のキャンディーをあげると、幼稚園の活発度1112=11^1*1^2=1
  • 子供1122個,子供2211個のキャンディーをあげると、幼稚園の活発度1211=11^2*1^1=1
  • 子供1133個,子供2200個のキャンディーをあげると、幼稚園の活発度1310=11^3*1^0=1

従ってf(1,1)=1+1+1+1=4f(1,1)=1+1+1+1=4となり、ffを足し合わせた答えは44です。

1 2
1
3
14

子供が一人なので、子供11うれしさ幼稚園の活発度になります。また、キャンディの配り方は2つとも子供11にあげる11通りしかないため、この時の幼稚園の活発度ffの値に等しくなります。

  • 子供11はしゃぎ度11の時、f(1)=12=1f(1)=1^2=1
  • 子供11はしゃぎ度22の時、f(2)=22=4f(2)=2^2=4
  • 子供11はしゃぎ度33の時、f(3)=32=9f(3)=3^2=9

従って答えは1+4+9=141+4+9=14となります。

2 3
1 1
2 2
66

f(1,1)=4,f(1,2)=15,f(2,1)=15,f(2,2)=32f(1,1)=4 , f(1,2)=15 , f(2,1)=15 , f(2,2)=32 となることがわかるので、答えは4+15+15+32=664+15+15+32=66になります。

4 8
3 1 4 1
3 1 4 1
421749

部分点の条件を満たします。

3 100
7 6 5
9 9 9
139123417