题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4532
题意:有n个班级的人,第i个班级的人有d[i]个。将所有人排成一排,同班级的人不相邻,有多少种排列方案?
思路:由于每个班级的人是不同的,我们先将所有人看作相同的,最后乘以一个全排列即可。f[i][j]表示前i个班级的人排好后有j个位置两侧是同一个班级的人的排列方案数。
i64 C[N][N],f[N][N],a[N],d[N];int n;int T,num=0;void init(){ int i,j; C[0][0]=1; for(i=1;i