题目链接

BZOJ2729

题解

高考数学题。。。

我们先把老师看做男生,女生插空站

如果两个老师相邻,我们把他们看做一个男生,女生插空站

对于\(n\)个男生\(m\)个女生的方案数:

\[n!m!{n + 1 \choose m}
\]

还要特判一下没有男生女生的情况

然后高精即可

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<map>
#define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt)
#define REP(i,n) for (int i = 1; i <= (n); i++)
#define mp(a,b) make_pair<int,int>(a,b)
#define cls(s) memset(s,0,sizeof(s))
#define cp pair<int,int>
#define LL long long int
using namespace std;
const int maxn = 100005,B = 10000,maxm = 100005,INF = 1000000000;
inline int read(){
int out = 0,flag = 1; char c = getchar();
while (c < 48 || c > 57){if (c == '-') flag = -1; c = getchar();}
while (c >= 48 && c <= 57){out = (out << 3) + (out << 1) + c - 48; c = getchar();}
return out * flag;
}
struct NUM{
int s[4000],len;
NUM(){cls(s); len = 0;}
void out(){
printf("%d",s[len]);
for (int i = len - 1; i; i--)
printf("%04d",s[i]);
}
}A,C;
inline NUM operator *(const NUM& a,const int& b){
NUM c;
c.len = a.len;
LL carry = 0,tmp;
for (int i = 1; i <= a.len; i++){
tmp = a.s[i] * b + carry;
c.s[i] = tmp % B;
carry = tmp / B;
}
while (carry) c.s[++c.len] = carry % B,carry /= B;
return c;
}
inline NUM operator -(const NUM& a,const NUM& b){
NUM c;
c.len = a.len;
int carry = 0,tmp;
for (int i = 1; i <= a.len; i++){
tmp = a.s[i] - b.s[i] + carry;
if (tmp < 0) tmp += B,carry = -1;
else carry = 0;
c.s[i] = tmp;
}
while (c.len && !c.s[c.len]) c.len--;
return c;
}
int main(){
int n = read(),m = read();
if (n + 3 < m || (!n && !m)){
puts("0"); return 0;
}
n += 2;
A.s[A.len = 1] = 1;
for (int i = n; i > n - m + 1; i--)
A = A * i;
for (int i = n + 1; i; i--)
A = A * i;
n--;
if (n + 1 >= m){
C.s[C.len = 1] = 1;
for (int i = n; i > n - m + 1; i--)
C = C * i;
for (int i = n + 1; i; i--)
C = C * i;
C = C * 2;
}
A = A - C;
A.out();
return 0;
}

BZOJ2729 [HNOI2012]排队 【高精 + 组合数学】的更多相关文章

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

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

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

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

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

    Description 某中学有 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]排队 组合数

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

  7. [ZJOI2011]看电影(组合数学/打表+高精)

    Description 到了难得的假期,小白班上组织大家去看电影.但由于假期里看电影的人太多,很难做到让全班看上同一场电影,最后大家在一个偏僻的小胡同里找到了一家电影院.但这家电影院分配座位的方式很特 ...

  8. Luogu1655 小朋友的球 (组合数学,第二类斯特林数,高精)

    我bingoyes再高精用STL就饿死,死外边! string真的爽... 斯特林数模板题:\(S(n,m) = S(n-1,m-1)+S(n-1,m)*n\) #include <iostre ...

  9. luogu P3223 [HNOI2012]排队

    LINK:排队\ 原谅我没学过组合数学 没有高中数学基础水平... 不过凭着隔板法的应用还是可以推出来的. 首先考虑女生 发现一个排列数m! 两个女生不能相邻 那么理论上来说存在无解的情况 而这道题好 ...

随机推荐

  1. MySQL索引介绍

    引言 今天Qi号与大家分享什么是索引.其实索引:索引就相当于书的目录 索引介绍 用官方的话说就是 索引是为了加速对表中数据行的检索而创建的一种分散的存储结构.索引是针对表而建立的,它是由数据页面以外的 ...

  2. python 复习函数 装饰器

    # 函数 —— 2天 # 函数的定义和调用 # def 函数名(形参): #函数体 #return 返回值 #调用 函数名(实参) # 站在形参的角度上 : 位置参数,*args,默认参数(陷阱),* ...

  3. (译)JavaScript 中的正则表达式(RegEx)实操——快速掌握正则表达式,伴有随手可练的例子————(翻译未完待续)

    (原文:https://blog.bitsrc.io/a-beginners-guide-to-regular-expressions-regex-in-javascript-9c58feb27eb4 ...

  4. 初步学习pg_control文件之九

    接前文,初步学习pg_control文件之八 来看这个: pg_time_t time; /* time stamp of last pg_control update */ 当初初始化的时候,是这样 ...

  5. mysql 函数以及操作总结

    1. 拼接 concat(参数1,参数2,.. ,参数)  实现将多个字符串拼接到一起 要批量修改一个字段值   字段值又是复杂的sql 计算得来   通过查询字段值 和 修改的条件fundId(这是 ...

  6. PostgreSQL 10.0 压缩版的 pgAdmin 不能用的问题

    PostgreSQL终于发布10.0正式版了!下载压缩版的更新了一下本机的版本,然后打开pgAdmin的时候总是报错“The application server could not be conta ...

  7. 有没有不适合使用flex/lex作为词法分析器的语言?(摘自知乎)

    本问题及解答摘自本人知乎 http://www.zhihu.com/people/chaos-xie   http://www.zhihu.com/question/29922657 感谢知乎网友的回 ...

  8. jmeter处理响应结果中文乱码

    1. 在线程下面添加后置处理器BeanShell PostProcessor,增加script:prev.setDataEncoding("UTF-8"); 2. 在jmeter. ...

  9. EFT4 生成实体类

    创建T4模本拷贝以下代码 <#@ template language="C#" debug="false" hostspecific="true ...

  10. 时屏蔽ios和android下点击元素时出现的阴影

    -webkit-tap-highlight-color -webkit-tap-highlight-color:rgba(255,255,255,0)