题意:

有三种岛屿,数量分别为a,b,c;任意两个岛屿可以最多建一座桥(桥长度为1),问你有几种建桥方式;

同种岛屿要么无法达到,要么距离至少为3;

组合数学思路:

限制条件可以理解为:1.同种岛屿之间不能有桥;2.同种岛屿不能同时连着同一个岛屿;

因为条件1,所以建桥可以分三步,a与b的建桥情况,b与c的建桥情况,a与c的建桥情况,即每种岛屿的每个岛屿与另一种的每个岛屿之间有没有桥。

因为条件2,每种岛屿的每个岛屿最多只能和另一种的岛屿建一座桥

对于第一步,min(a,b)+1种情况,即分别有0,1,2,。。。,min(a+b)座桥时的情况,对每个情况k,方式数有,从a中选k个岛屿从b中选k个岛屿(即C(a,k) C(b,k)*k!)。

根据分类相加,分布相乘的计数原理,可以求出答案。(Cn,m可以用递推预处理,An,m等于Cn,m*m!,m!也可以预处理)

DP思路:

直接拿dp[i][j] 代表有i个红颜色小岛,j个蓝颜色小岛的情况下有多少种。

新增的小岛有两种情况:

1.不和其他小岛相连

2.和另一种颜色的某个小岛相连

dp[i][j]=(dp[i-1][j]+(dp[i-1][j-1]*j%mod))%mod;

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

51nod 1257 01分数规划 Previous
二分 Next