题目传送门


题目描述

某中学有n名男同学,m名女同学和两名老师要排队参加体检。他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的)


输入格式

只有一行且为用空格隔开的两个非负整数n和m,其含义如上所述。


输出格式

输出文件output.txt仅包含一个非负整数,表示不同的排法个数。注意答案可能很大。


数据范围与提示

对于30%的数据:n≤100,m≤100
对于100%的数据:n≤2000,m≤2000


题解

一道组合数学的入门题,还不会组合数学的可以跳转这篇博客:组合数学入门

ppt上的例题,附带讲解:

将男生和女生混在一起,将女生往里插

如果两个老师在一起,方案数为$A_{n+1}^{n+1}$×$A_{2}^{2}$

两个老师之间必须插进一个女生

将两个老师和一个女生打包成一坨当成一个男生

方案数为m×$A_{n+1}^{n+1}$×$A_{2}^{2}$

剩余m-1个女生,插进n+2个空位中

总方案数为m×$A_{n+1}^{n+1}$×$A_{2}^{2}$×$A_{m-1}^{m-1}$×$C_{n+2}^{m-1}$

如果两个老师不在一起,方案数为$A_{n+2}^{n+2}$-$A_{n+1}^{n+1}$×$A_{2}^{2}$

此时女生随便插,方案数为($A_{n+2}^{n+2}$-$A_{n+1}^{n+1}$×$A_{2}^{2}$)×$A_{m}^{m}$×$C_{n+3}^{m}$

最终答案为:m×$A_{n+1}^{n+1}$×$A_{2}^{2}$×$A_{m-1}^{m-1}$×$C_{n+2}^{m-1}$+($A_{n+2}^{n+2}$-$A_{n+1}^{n+1}$×$A_{2}^{2}$)×$A_{m}^{m}$×$C_{n+3}^{m}$

但是呢?我懒。

这也太麻烦了吧?!

于是,自己推式子:

依然分类讨论:

先讨论两个老师中间只站一个女生,将老师和那个女生看为一个整体:

$A_{m}^{1}$×$A_{n}^{n}$×$A_{n+1}^{1}$×$A_{2}^{2}$×$A_{n+2}^{m-1}$。

接着讨论两个男生中间站一个老师的情况:

$A_{n}^{n}$×$A_{n+1}^{2}$×$A_{n+3}^{m}$。

然后整理化简得:(n2+3×n+2×m)×(n+1)!×(n-m+4)×(n-m+5)×…×(n+2)。


代码时刻

#include<bits/stdc++.h>
using namespace std;
int n,m;
int l=1;
long long ans[100001],flag1,flag2;
void wzc(int x)//高精乘低精
{
flag2=0;
for(int i=1;i<=l;i++)
{
flag1=ans[i]*x;
ans[i]=flag1%1000000000000000+flag2;
flag2=flag1/1000000000000000;
}
if(flag2)ans[++l]=flag2;
}
int main()
{
ans[1]=1;
scanf("%d%d",&n,&m);
wzc(n*n+n*3+2*m);
for(int i=1;i<=n+1;i++)
wzc(i);
for(int i=n-m+4;i<=n+2;i++)
wzc(i);
cout<<ans[l];
while(--l)
{
cout.fill('0');//不足补0
cout<<setw(15)<<ans[l];
}
return 0;
}

rp++

[BZOJ2729]:[HNOI2012]排队(组合数学)的更多相关文章

  1. BZOJ2729:[HNOI2012]排队(组合数学)

    Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不 ...

  2. 【bzoj2729】[HNOI2012]排队 组合数学+高精度

    题目描述 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的) 输入 ...

  3. BZOJ2729 [HNOI2012]排队 【高精 + 组合数学】

    题目链接 BZOJ2729 题解 高考数学题... 我们先把老师看做男生,女生插空站 如果两个老师相邻,我们把他们看做一个男生,女生插空站 对于\(n\)个男生\(m\)个女生的方案数: \[n!m! ...

  4. BZOJ2729 HNOI2012排队(组合数学+高精度)

    组合入门题.高精度入门题. #include<iostream> #include<cstdio> #include<cstdlib> #include<cs ...

  5. bzoj2729 [HNOI2012]排队

    组合数学,推一下式子,并不难推. java代码 import java.io.*; import java.math.BigInteger; import java.util.*; public cl ...

  6. [bzoj2729][HNOI2012]排队 题解 (排列组合 高精)

    Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不 ...

  7. 【BZOJ2729】[HNOI2012]排队 组合数

    [BZOJ2729][HNOI2012]排队 Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那 ...

  8. bzoj 2729: [HNOI2012]排队

    2729: [HNOI2012]排队 Time Limit: 10 Sec Memory Limit: 128 MB Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体 ...

  9. 2729: [HNOI2012]排队

    2729: [HNOI2012]排队 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 957  Solved: 449[Submit][Status] ...

随机推荐

  1. java tomcat服务器

    1.什么是javaweb? Java web,是用java技术来解决相关web互联网领域的技术的总称. web包括:web服务器和web客户端两部分.java在最早web客户端的应用有java app ...

  2. docker:相关命令

    1.查看正在运行的容器 docker ps docker ps -a 查看所有的容器,包括已经停止了的 2.WORKDIR Dockerfile中的WORKDIR指令用于指定容器的一个目录,容器启动时 ...

  3. webpack常用的插件

    webpack常用的开发插件 1.clean-webpack-plugin 运行webpack build时先把打包进入的文件夹清空 注意,它是以对象的方式去接收的 const { CleanWebp ...

  4. python-ssh-远程服务器+远程docker执行命令

    在python语言中实现远程服务器执行命令+远程dcoker执行命令 def ssh_exec_command(ip, username, password, cmd=None): "&qu ...

  5. docker inspect命令查看镜像详细信息

    使用 inspect 命令查看镜像详细信息,包括制作者.适应架构.各层的数字摘要等. # docker inspect --help Usage: docker inspect [OPTIONS] N ...

  6. 安装BCG界面库 会导致vs2013qt库配置消失

    安装BCG界面库 会导致vs2013qt库配置消失 安装BCG界面库 会导致vs2013qt库配置消失 安装BCG界面库 会导致vs2013qt库配置消失

  7. P1086 花生采摘题解

    这道题只是普通的模拟,不是贪心! 重点在于这句话:“然后再找出剩下的植株里花生最多的,去采摘它的花生”. 也就是,你下一个必须找到剩下花生最多的,而不是按照贪心思想来考虑在限定时间内的最优解 那么,应 ...

  8. mysql忘记密码如何重置密码,以及修改root密码的三种方法

    1.先将MySQL停止. 命令:systemctl  stop mysqld       #停掉MySQL 命令:systemctl status mysqld         #查看状态 2.然后跳 ...

  9. idea 新手入门配置

    1.配置新建类时,创建者信息 2.配置svn 1. 在idea中不显示无用的内容,配置如下  .hprof;.iml;.pyc;.pyo;.rbc;.yarb;~;.DS_Store;.git;.hg ...

  10. HIVE 必知必会

    hive: 基于hadoop,数据仓库软件,用作OLAP OLAP:online analyze process 在线分析处理OLTP:online transaction process 在线事务处 ...