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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS6离线升级CentOS7

‘利用本地centos7镜像升级centos6.7’ 需求背景&#xff1a; 服务器上安装的都是centos6.7&#xff0c;新部署的服务需要在centos7下&#xff0c;要么跑到机房重装系统&#xff0c;要么找离线解决方案&#xff0c;升级系统。 解决方案&#xff1a;之前有过离线升级小本版&a…

升级Python2.7后 no module name yum

从Python2.6.6升级到python2.7.5后导致Yum不可用。 原因是yum 命令&#xff0c;是调用的 /usr/bin/yum 脚本文件&#xff0c; 需要修改为 /usr/bin/python2.6.6 保存退出&#xff0c;成功解决。另外可能还会引起其他的问题&#xff0c;解决的思路就是根据报错的指向&#xff0…

hadoop综合大作业

Hadoop综合大作业 要求&#xff1a; 1.用Hive对爬虫大作业产生的文本文件&#xff08;或者英文词频统计下载的英文长篇小说&#xff09;词频统计。 词频统计的截图如下&#xff1a; 上次我所使用的文章是一篇中文文章&#xff0c;所以这次我用了一篇英文文档来进行分词&#xf…

Hadoop集群的kerberos认证

文章转载自http://www.cnblogs.com/easycloud/p/3724437.html 转载主要用于个人学习备查。 环境&#xff1a; OS 版本: Centos6.4 Kerberos版本: krb5-1.10.3 环境配置 机器名 Ip地址 功能 安装模块 ganglia.localdomain 192.168.124.140 Kerberos server krb5-li…

Oracle 表备份还原

方法1&#xff1a; create table mdmuser20120801 as select * from mdmuser方法2&#xff1a;create table mdmuser20120801 as select * from mdmuser where 12;insert into mdmuser20120801 select * from mdmuser ;转载于:https://www.cnblogs.com/zhchsh/p/9087331.html

HDFS文件导出本地合并为一个文件

HDFS受限于Block大小&#xff0c;大文件会分割成多个块分布在多个节点&#xff0c;导出本地的时候直接用&#xff1a; hadoop fs -get 命令会在本地创建一个目录存放多个块。 要想合并为一个大文件可以这样&#xff1a; hadoop fs -getmerge hdfs:///user/nixm/news_rank1…

MPI对道路车辆情况的Nagel-Schreckenberg 模型进行蒙特卡洛模拟

平台Ubuntu 16.04&#xff0c;Linux下MPI环境的安装见链接&#xff1a;https://blog.csdn.net/lusongno1/article/details/61709460据 Nagel-Schreckenberg 模型&#xff0c;车辆的运动满足以下规则&#xff1a;1. 假设当前速度是 v &#xff0c;和前一辆车的距离为d。2. 如…

Kerberos:cannot get master principle

The server encountered an internal error that prevented it from fulfilling this request 问题背景&#xff1a; 集群新增节点&#xff0c;添加datanode、hawq segment、pxf服务后&#xff0c;原先连接Hbase在hawq 外表报错“获取不到master principle 舍弃中……”、“Th…

BZOJ3223文艺平衡树——非旋转treap

此为平衡树系列第二道&#xff1a;文艺平衡树您需要写一种数据结构&#xff0c;来维护一个有序数列&#xff0c;其中需要提供以下操作&#xff1a; 翻转一个区间&#xff0c;例如原有序序列是5 4 3 2 1&#xff0c;翻转区间是[2,4]的话&#xff0c;结果是5 2 3 4 1 输入 第一行…

Linux centOS 硬盘分区挂载

文章转载自&#xff1a;http://linux008.blog.51cto.com/2837805/548711 1、什么是分区&#xff1f; 分区是将一个硬盘驱动器分成若干个逻辑驱动器&#xff0c;分区是把硬盘连续的区块当做一个独立的磁硬使用。分区表是一个硬盘分区的索引,分区的信息都会写进分区表。 2、为…

Ambari删除服务报错之CSRF protection is turned on

Ambari安装组件失败后执行 curl 删除服务报错 CSRF protection is turned on X-Requested_By HTTP Header is required 解决方案&#xff1a; vi /etc/ambari-server/conf/ambari-properties增加 api.csrfPrevention.enabledfalse重启Ambari: ambari-server restart重新执行s…

Android 中.aar文件生成方法与用法

https://i.cnblogs.com/EditPosts.aspx?opt1 无论是用Eclipse还是用Android Studio做android开发&#xff0c;都会接触到jar包&#xff0c;全称应该是&#xff1a;Java Archive&#xff0c;即java归档文件。在用AS的过程中&#xff0c;你会发现有aar这么个东西&#xff0c;经查…

Ambari实现HTTPS登陆

关于Ambari的安全、访问控制在这里有非常详细的介绍。 http://pivotalhd.docs.pivotal.io/docs/security-guide-ambari-2.1.2.html 另外还可以参考这一篇 https://community.hortonworks.com/articles/39865/enabling-https-for-ambariserver-and-troubleshootin.html Amba…

ffs, fls

linux内核中的宏ffs(x) linux内核中ffs(x)宏是平台相关的宏,在arm平台,该宏定义在 arch/arm/include/asm/bitops.h #define ffs(x) ({ unsigned long __t (x); fls(__t & -__t); }) __t & -__t 等于找到__t 第一个为1的位(从低位开始),并把该位保留为1其余位清0. 例…

PLSQL注册码

Product Code: 4t46t6vydkvsxekkvf3fjnpzy5wbuhphqz serial Number: 601769 password: xs374ca

【JAVA学习】09.创建BootstrapTale列表页

【提要】只要JSON 返回了rows , total ,数据就会展示在列表 【步骤】 1、页面添加Table标签用于装载数据 <table class"table" id"userTable"> <tr><td>请输入查询条件查询</td></tr>   </table> 2、页面初始化请求…

安装ElasticSearch过程遇到的坑

采用默认安装时是可以成功安装的&#xff0c;但是只能在本机通过127.0.0.1:9200访问&#xff0c;修改: network.host: 为本机IP后&#xff0c;启动报错。 elasticsearch 5.3 安装过程中遇到了一些问题&#xff0c;这里简单记录一下 。 问题一&#xff1a;警告提示 [2016-11-…

JS的介绍

1.JS是什么 &#xff1f; JS是一门脚本语言&#xff0c;是一门解释性语言&#xff0c;是一种动态类型的语言&#xff0c;是一门基于对象的语言。 脚本语言和和编译语言的区别&#xff1a;脚本语言不需要编译&#xff0c;直接执行。编译语言是需要把代码翻译成计算机所认识的二进…

windows10上安装mysql

环境&#xff1a;windwos 10&#xff08;1511&#xff09; 64bit、mysql 5.7.14 一、下载mysql1. 在浏览器里打开mysql的官网http://www.mysql.com/2. 进入页面顶部的"Downloads"3. 打开页面底部的“Community(GPL) Downloads” 4. 在页面中间的位置找到我们windows上…

后台长期运行进程的三种方式

入门&#xff1a; nohup command > /var/log/test.log 2>&1 & 优雅&#xff1a; screen方式&#xff0c;通过screen 命令创建的环境下运行的终端命令&#xff0c;其父进程不是sshd 登陆会话&#xff0c;而是screen,这样就可以避免用户退出进程消失的问题&…