【bzoj2729】[HNOI2012]排队 组合数学+高精度
2017-08-16 08:39
246 查看
题目描述
[align=left]某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检。他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的)[/align]
输入
[align=left]只有一行且为用空格隔开的两个非负整数 n 和 m,其含义如上所述。[/align]
[align=left]对于 30%的数据 n≤100,m≤100[/align]
[align=left]对于 100%的数据 n≤2000,m≤2000[/align]
输出
[align=left]输出文件 output.txt 仅包含一个非负整数,表示不同的排法个数。注意答案可能很大。[/align]
样例输入
1 1
样例输出
12
题解
组合数学+高精度
先不考虑两名老师不相邻,那么就相当于有$n+2$个男同学和$m$个女同学,女同学不能相邻。显然使用插空法解决。$n+2$个男同学有$(n+2)!$种排法,$m$个女同学放入到$n+3$个空位中有$A_{n+3}^m$种排法,故总方案数为$(n+2)!*A_{n+3}^m$。
再考虑两名老师相邻的情况,如果他们相邻,则可以放在一起当做一个人处理,处理同上为$(n+1)!*A_{n+2}^m$,还要再乘上一个$2!$,因为两名老师有$2!$种排法。
故答案为$(n+2)!*A_{n+3}^m-2!*(n+1)!*A_{n+2}^m$。
需要高精度,使用Python解决。
[align=left]某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检。他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的)[/align]
输入
[align=left]只有一行且为用空格隔开的两个非负整数 n 和 m,其含义如上所述。[/align]
[align=left]对于 30%的数据 n≤100,m≤100[/align]
[align=left]对于 100%的数据 n≤2000,m≤2000[/align]
输出
[align=left]输出文件 output.txt 仅包含一个非负整数,表示不同的排法个数。注意答案可能很大。[/align]
样例输入
1 1
样例输出
12
题解
组合数学+高精度
先不考虑两名老师不相邻,那么就相当于有$n+2$个男同学和$m$个女同学,女同学不能相邻。显然使用插空法解决。$n+2$个男同学有$(n+2)!$种排法,$m$个女同学放入到$n+3$个空位中有$A_{n+3}^m$种排法,故总方案数为$(n+2)!*A_{n+3}^m$。
再考虑两名老师相邻的情况,如果他们相邻,则可以放在一起当做一个人处理,处理同上为$(n+1)!*A_{n+2}^m$,还要再乘上一个$2!$,因为两名老师有$2!$种排法。
故答案为$(n+2)!*A_{n+3}^m-2!*(n+1)!*A_{n+2}^m$。
需要高精度,使用Python解决。
def mul(x , y): ans = 1 for i in range (x , y + 1): ans = ans * i return ans s = input().split() n = int(s[0]) m = int(s[1]) print(mul(1 , n + 2) * mul(n - m + 4 , n + 3) - 2 * mul(1 , n + 1) * mul(n - m + 3 , n + 2))
相关文章推荐
- 【BZOJ】2729: [HNOI2012]排队
- [BZOJ2729] [HNOI2012]排队
- 【BZOJ2729】[HNOI2012]排队 组合数
- BZOJ2729 [HNOI2012]排队 【高精 + 组合数学】
- BZOJ2729 [HNOI2012]排队
- 【BZOJ2729】【HNOI2012】排队(组合数学)
- BZOJ 2729: [HNOI2012]排队|排列组合
- bzoj2729: [HNOI2012]排队
- [BZOJ2729][HNOI2012]排队(组合数学+高精度)
- 【HNOI2012】【BZOJ2729】排队
- 【BZOJ2729】【HNOI2012】排队 组合数 数论 Python高精度
- 【BZOJ2729】[HNOI2012]排队【组合数学】
- bzoj2729 [HNOI2012]排队
- BZOJ 2729 HNOI2012 排队 组合数学
- [BZOJ 2729][HNOI2012]排队:高精度+组合数
- 【BZOJ 2729】 [HNOI2012]排队
- BZOJ2729 [HNOI2012]排队
- 【bzoj2729】[HNOI2012]排队
- 2729:[HNOI2012]排队 - BZOJ
- 【BZOJ】2729: [HNOI2012]排队