1079: [SCOI2008]着色方案
Description
有n个木块排成一行,从左到右依次编号为1~n。你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块。
所有油漆刚好足够涂满所有木块,即c1+c2+…+ck=n。相邻两个木块涂相同色显得很难看,所以你希望统计任意两
个相邻木块颜色不同的着色方案。
Input
第一行为一个正整数k,第二行包含k个整数c1, c2, … , ck。
Output
输出一个整数,即方案总数模1,000,000,007的结果。
Sample Input
3
1 2 3
Sample Output
10
HINT
100%的数据满足:1 <= k <= 15, 1 <= ci <= 5
我们发现K最多只有5,于是就会想到这样一个DP:
定义F[L][a][b][c][d][e]表示上一次用的油漆在没有用的情况下可以刷L个墙,而此时还能刷1个墙的油漆数量有a个,能刷2个墙的油漆数量有b个……能刷5个墙的油漆数量有e个;
此时考虑转移方程:
如果能刷L-1个墙的油漆数量大于1(也就是说除了上一次用的油漆还有油漆可以用),那么就有转移方程(