BZOJ2729 [HNOI2012]排队 【高精 + 组合数学】
题目链接
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;
}
转载于:https://www.cnblogs.com/Mychael/p/9072096.html
BZOJ2729 [HNOI2012]排队 【高精 + 组合数学】相关推荐
- [bzoj2729][HNOI2012]排队 题解 (排列组合 高精)
Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不 ...
- bzoj2729: [HNOI2012]排队
高精度+排列组合. 如果计算老师能挨在一起的情况 有 (n+2)! * A(n+3,m) 老师一定挨宰一起的情况 有 2*(n+1)!*A(n+2,m). 相减就是答案. #include<cs ...
- poj1737 Connected Graph(计数,组合数学,递推,高精)
求n个点的连通图的个数f[n],带标号.有两种做法. 1.直接搞出f[n]的递推式. f[n]=∑k=1n−1f[k]∗f[n−k]∗Ck−1n−2∗(2k−1)f[n]=\sum\limits_{k ...
- java第二类斯特林数编程代码,Luogu1655 小朋友的球 (组合数学,第二类斯特林数,高精)...
我bingoyes再高精用STL就饿死,死外边! string真的爽... 斯特林数模板题:\(S(n,m) = S(n-1,m-1)+S(n-1,m)*n\) #include #include # ...
- [HNOI2012]排队
题目描述 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的) 输入输 ...
- P3223 [HNOI2012]排队(高中排列组合)
传送门 题意 nnn个男生,mmm个女生,222个老师排队 女生和女生不能相邻,老师和老师不能相邻,问方案数. 考虑到老师只有两个,所以可以对老师来讨论. Ⅰ.\color{Red}Ⅰ.Ⅰ.两只老师间 ...
- 高精地图与自动驾驶(下)
高精地图与自动驾驶(下) 二.高精地图与自动驾驶 谈到高精地图对自动驾驶的作用,可以对比自动驾驶和人类驾驶的流程的相通性. 人驾驶的时候以眼睛为主,耳朵辅助观察测量环境:自动驾驶车用多种传感器包括摄像 ...
- 高精地图与自动驾驶(上)
高精地图与自动驾驶(上) 前言 自动驾驶的实现主要有三个步骤:感知.决策规划.行车控制.这与你走路上班/上学的逻辑是相似的:眼睛看到画面,告诉大脑,然后你就知道了自己在哪里,以及要往哪个方向走,并指挥 ...
- 高精地图中导航标识识别
高精地图中导航标识识别 思路 主要介绍高精地图导航标识识别上的技术演进,这些技术手段在不同时期服务了高精地图产线需求. 高精地图介绍 当你开车导航的时候,导航地图会向我们推荐一条或几条路线,有些地图甚 ...
最新文章
- 网络游戏性能测试的几点想法
- CentOS 7.8下安装PyRosetta4
- Kali linux 2016.2(Rolling)里Metasploit的OpenVAS
- Weblogic配置故障转移
- Have a tea -(极客大挑战(SMC,fork
- morlet小波matlab代码,morlet小波matlab程序
- 个人常用word技巧----平时编辑word能快不少~
- 看日本雅-miyavi演唱会
- Nginx学习总结(9)——前端跨域问题解决
- 同步、异步、阻塞、非阻塞IO
- 第十二届蓝桥杯大赛软件赛决赛题解
- PRICAI 2016 论文精选 | 基于车辆优先级优化交通系统的道路分布
- 通过手机号码编码传送信息的想法
- Nginx PageSpeed模块配置和使用
- python面向对象实例王者荣耀_python王者荣耀
- 当前版本与卡刷包android_小米5s卡刷包android版本不一致怎么解决
- 【STM32F407开发板用户手册】第2章 STM32F407的开发环境搭建
- HDU4585 Shaolin
- Rust中iter()和into_iter()的区别
- React(10)-组件通信(important)
热门文章
- pyecharts怎么绘制散点图_pyecharts可视化和wx的结合
- python变量类型有几种_python十种变量类型
- 《常用控制电路》学习笔记——数控锁相环调速电路
- LeetCode算法入门- 3Sum Closest -day10
- Java核心篇之JVM--day3
- 英特尔nuc能代替主机吗_python编程,热度为什么越来越高,python能代替JAVA吗?...
- vivo android p 机型,vivo X21成全球首批Android P适配机型!vivo :不小心就秀实力了
- yii2 html 跳转,阐述在Yii2上实现跳转提示页
- python 如何匹配列表中某个单词_Python中部分指定单词的最佳匹配项
- java 异常捕获抛出_JAVA异常处理捕获与抛出原理解析