LINK:排队\
原谅我没学过组合数学 没有高中数学基础水平...
不过凭着隔板法的应用还是可以推出来的。
首先考虑女生 发现一个排列数m! 两个女生不能相邻 那么理论上来说存在无解的情况 而这道题好些没有特意去说明无解输出什么。
这里还是尽量特判一下吧。然后考虑要在m-1个空隙中插入人 人可以是男生或者是老师。这里我们假设老师不区别对待
那么就是 n+2个人 我们先强制插入了m-1个人 剩余n+3-m个人 剩下的人 此时存在m+1个空隙了 隔板法可知此时的方案数为C(n+3-m+m+1-1,m+1-1);
化简为C(n+3,m); 可以发现此时老师和男生的排列可以任意 所以要乘上一个(n+2)!。
我们考虑不合法的方案 两个老师在一起了 把老师当成一个人 单独乘上2! 再按照刚才计算方案的方法计算即可。
第一步的方案数:m!(n+2)!C(n+3,m) 减去第二部的方案数:2!m!(n+1)!C(n+2,m);
可以发现我们已经统计了所有可能发生的情况。
唯一可能发生的情况就是无解。
还有一种思考方式 先考虑女孩 再把男孩插入其中 最后插如老师 老师此时带来的贡献为(n+m+1)*(n+m);
但是这种方法存在漏洞 这样会出现男孩不够m-1时需要老师 而我们老师插入的时候已经默认完全合法了。
当n>=m-1时是可行的 这个方法要特判更多 没有上述方法特判无解来的快。
还有一种解法:先考虑老师 考虑没有限制 n+2个男孩 m个女生 有n+3个空隙可以放女生 此时方案数为C(n+3,m)
总方案为 m!(n+2)!C(n+3,m) 需要减掉的方案和刚才一样 这种是插空法 和我们的隔板法有异曲同工之妙 但是比隔板法要简单。
主要运用的是 找到空隙插入而并非强制让空隙不存在。
两种方法是等效的 我们高兴的是 遇到这种题目 思路不同但是得到的确实相同。
值得注意的是需要使用高精度。