不想弄题面了。。。

题解

做这道题目我真的好蠢。。。

好容易的数学题目

很明显自己写高精度吧。。。(不解释了)

被dalaoD了,底下的题解可能是假的。看代码里的注释把QaQ

/*

剩下的如何计算。

要有两类情况

①老师之间有男生

那么,这种情况下,直接插空就行了

先把M个女生插进去A(m,n+1)

再把2个老师插进去A(2,n+m+1)

②老师之间只有一个女生

先选出一个女生,放在老师之间A(1,m)

再把剩下的女生插进男生中A(m-1,n+1)

最后把老师和女生看成整体放进去A(1,m+n)

因为老师之间位置可以互换,还有乘2

*/

最后两类直接相加即可

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
inline int read()
{
register int x=0,t=1;
register char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-'){t=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*t;
}
struct BigInt
{
int s[1000000];
int ws;
void Prepare()
{
s[1]=1;
ws=1;
}
void Multi(int x)
{
for(int i=1;i<=ws;++i)s[i]*=x;
for(int i=1;i<=ws;++i)s[i+1]+=s[i]/10,s[i]%=10;
while(s[ws+1])ws+=1,s[ws+1]+=s[ws]/10,s[ws]%=10;
}
void write()
{
for(int i=ws;i;--i)printf("%d",s[i]);
printf("\n");
}
}Ans1,Ans2;
int main()
{
int N=read(),M=read();
//第一种情况,老师之间插男生
Ans1.Prepare();
for(int i=2;i<=N;++i)Ans1.Multi(i);
Ans1.Multi(N+1);Ans1.Multi(N);
for(int i=1;i<=M;++i)Ans1.Multi(N+4-i);
//第二种情况,老师之间插女生
//首先选出一个女生放在老师之间
Ans2.Prepare();
Ans2.Multi(M);
Ans2.Multi(2);
//作为一个整体丢在男生之间
for(int i=1;i<=N;++i)Ans2.Multi(i+1);
//再把女生放进来
for(int i=1;i<M;++i)Ans2.Multi(N+3-i);
if(Ans1.ws<Ans2.ws)swap(Ans1,Ans2);
for(int i=1;i<=Ans2.ws;++i)Ans1.s[i]+=Ans2.s[i];
for(int i=1;i<=Ans1.ws;++i)Ans1.s[i+1]+=Ans1.s[i]/10,Ans1.s[i]%=10;
while(Ans1.s[Ans1.ws+1])Ans1.ws++,Ans1.s[Ans1.ws+1]+=Ans1.s[Ans1.ws]/10,Ans1.s[Ans1.ws]%=10;
Ans1.write();
return 0;
}

【BZOJ2729】【HNOI2012】排队(组合数学)的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. bzoj2729 [HNOI2012]排队

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

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

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

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

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

  9. bzoj 2729: [HNOI2012]排队

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

  10. 2729: [HNOI2012]排队

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

随机推荐

  1. php.ini 中文详解

    [PHP]  ; PHP还是一个不断发展的工具,其功能还在不断地删减  ; 而php.ini的设置更改可以反映出相当的变化,  ; 在使用新的PHP版本前,研究一下php.ini会有好处的   ;;; ...

  2. ubuntu16.04安装ftp服务器

    参考文章: http://www.linuxidc.com/Linux/2017-01/139233.htm 1.检查是否安装vsftpd,如果安装了跳过第二步 vsftpd -v 2.安装vsftp ...

  3. Quartz.NET 3.0 正式发布

    Quartz.NET是一个强大.开源.轻量的作业调度框架,你能够用它来为执行一个作业而创建简单的或复杂的作业调度.它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等.在2017 ...

  4. Swift iOS 日期操作:NSDate、NSDateFormatter

    1.日期(NSDate) // 1.初始化 // 初始化一个当前时刻对象 var now = NSDate() // 初始化一个明天当前时刻对象 var tomorrow = NSDate(timeI ...

  5. Virtualbox以及VWare在Win10下的不兼容

    异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html Hyper原因导致的,关闭即可 禁用 hyper-vbcdedit /set h ...

  6. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型

    1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  7. Java导出freemarker的三种方法

    在上一篇呢,我将导出word文档的想法与思路以及实现功能的代码分享了一下,在这里, 我想说的是我对导出freemarker模板路径的三种方法的理解和认知.  有错误的话希望大家帮忙指正 在接下来我会使 ...

  8. 换行符\r \n LF

    前言:在对照PSR-2规范时,看到文件结尾必须要以Unix LF(linefeed)结尾,不懂查~ 来源于:http://www.cppblog.com/prayer/archive/2009/08/ ...

  9. SpringBoot 中常用注解

    本篇博文将介绍几种SpringBoot 中常用注解 其中,各注解的作用为: @PathVaribale 获取url中的数据 @RequestParam 获取请求参数的值 @GetMapping 组合注 ...

  10. Mysql主从复制_模式之日志点复制

    MySQL数据复制的原理 MySQL复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).因此,要进行复制,必须在主服务器上启用二进制日志. 每个从服务器从主服务器接收主服务器已经记 ...