<题面>

这个题十分基础

写这个博客给自己看的呵呵

遇到这个题,一看就是组合数学,

so,开始推公式,

刚开始想的是,先排男生,再排女生,最后排老师

推了一会,呃呃呃,情况复杂,考虑的好像有点多。//蒟蒻心态

然后换了一个思路,

先排男生,再排老师,最后排女生

想了下,就决定用减法。


先把老师和男生混好,然后把女生插空

这样就会有一种非法情况,老师相连,而且只有一种

这样就可以把两个老师绑成一个整体,再按上述操作进行

就会有一个式子:

$A \binom{n+2}{n+2} \times A \binom{m}{n+3} -A \binom{2}{2} \times A \binom{n+1}{n+1} \times A\binom{m}{n+2}$

还是可以懂得吧?

而且只要用高精乘低精和高精减就可以了咯

最后蒻蒻的说:我调这个题主要在高精度上,苦笑

 #include <iostream>
#include <cstring>
#include <cstdio>
#define N 50000
using namespace std;
struct Hyper_long{
int *a;
Hyper_long(int k){
a=new int[k];
for(int i=;i<k;i++)a[i]=;
}
void out(){
if(a[]==)putchar('');
for(int i=a[];i>=;i--)putchar(a[i]+'');
puts("");
}
void set_length(int len){
a[]=len;
}
int length(){
return a[];
}
};
void operator *= (Hyper_long &x,int y){
long long r=;
for(int i=;i<=x.length();i++){
x.a[i]=x.a[i]*y+r;
r=x.a[i]/;
x.a[i]%=;
}
while(r!=){
x.a[]++;
x.a[x.a[]]=r;
r=x.a[x.a[]]/;
x.a[x.a[]]%=;
}
return ;
}
Hyper_long operator - (Hyper_long x,Hyper_long y){
Hyper_long k(N);
int len=max(x.length(),y.length());
for(int i=;i<=len;i++){
k.a[i]=x.a[i]-y.a[i];
if(k.a[i]<){
x.a[i+]--;
k.a[i]+=;
}
}
while(){
if(k.a[len]!= || len==) break;
len--;
}
k.set_length(len);
return k;
}
Hyper_long a(N),b(N),c(N);
int m,n;
int main(){
a.a[]=a.a[]=;
b.a[]=b.a[]=;
scanf("%d%d",&n,&m);
for(int i=;i<=n+;i++){//先把男生和老师混在一起
a*=i;
}
for(int i=n+;i>=n+-m+;i--){//把女生插进去
a*=i;
}
b*=;//把两个老师绑在一起
for(int i=;i<=n+;i++){//和男生混好
b*=i;
}
for(int i=n+;i>=n+-m+;i--){//把女生插进去
b*=i;
}
c=a-b;
c.out();//输出
}

Total Code

补:如果可以进行式子的处理然后合并同类项:

$A \binom{n+1}{n+1} \times A \binom{m-1}{n+3} \times (n-m+4)-2 \times A \binom{n+1}{n+1} \times A \binom{m-1}{n+3} \times (n+2)\\ = A \binom{n+1}{n+1} \times A \binom{m-1}{n+3} \times (n+2) \times (n-m+2) $

就可以实现只用高精乘低精就可以解决的问题了,提出的减法项只用int就可以呢

组合数学起步-排队[HNOI2012][BZOJ2729]的更多相关文章

  1. 组合数学起步-排列计数[ZJOI2010][BZOJ2111]

    <题面> 数据范围:$1 \leq N \leq 10^6, P \leq 10^9 $ 这个题…… 以为是排列,其实是组合 题目中说是从所有排列中找到Magic的,就是 $p_{i/2} ...

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

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

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

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

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

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

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

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

  6. 【BZOJ2729】【HNOI2012】排队(组合数学)

    不想弄题面了... 题解 做这道题目我真的好蠢... 好容易的数学题目 很明显自己写高精度吧...(不解释了) 剩下的如何计算. 要有两类情况 ①老师之间有男生 那么,这种情况下,直接插空就行了 先把 ...

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

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

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

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

  9. bzoj2729 [HNOI2012]排队

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

随机推荐

  1. 【学术篇】oj.jzxx.net2701 无根树

    这是一道来自OIerBBS的题目.. 原帖地址:http://www.oierbbs.com/forum.php?mod=viewthread&tid=512?fromuid=71 (似乎是个 ...

  2. 【转载】gdb基本命令总结

    本文介绍使用gdb调试程序的常用命令. 主要内容: [简介] [举例] [其他] [简介]  ============= GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.如果你是在 U ...

  3. BZOJ2226:[SPOJ5971]LCMSum

    Description Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n,n), where LCM(i,n) denotes t ...

  4. Zuul微服务网关

    Zuul简介:         Zuul是Netflix开源的微服务网关,它可以和Eureka.Ribbon.Hystrix等组件配合使用.Zuul的核心是一系列的过滤器,这些过滤器可以完成以下功能 ...

  5. WCF加密操作(包括证书和证书+帐号密码)

    WCF作为.net三大组件之一,伟大之处不用多说,但是其加密配置对于我这样的萌新来说还是颇有难度,因此将几天来的研究成果共享出来,与各位共勉~ 首先声明我的开发环境,Win10创意者更新 + Visu ...

  6. Java-JPA:JPA

    ylbtech-Java-JPA:JPA JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对 ...

  7. 给自己立下一个flag先

    恩,今天开始写博客. 其实主要原因是被人甩了,想找个事情让自己忙起来. 主要原因是“男人没钱就是无能”,我是个应届毕业生.所以你懂的. 我不喜欢让心情不爽,所以只能找事情让自己忙起来.所以我开始立Fl ...

  8. dns 逐级查找顺序

    1.浏览器 dns 缓存 2.Windows Host 文本 3.windows 本地 dns 缓存 方法/步骤 首先我们来查看win系统内保存的dns缓存并进行清空dns缓存操作. ... 点击确定 ...

  9. <jsp:forward page=""></jsp:forward>标签失效异常

    解决方案:在web.xml <filter-mapping>          <filter-name>struts2</filter-name>         ...

  10. href 页面跳转页面 参数

    $.getUrlParam = function (name) { var reg = new RegExp("(^|&)" + name + "=([^& ...