HNOI2012D1T3 排队 题解
来源:互联网 发布:apache用什么语言写的 编辑:程序博客网 时间:2024/06/05 00:57
(题目描述略)
组合数学。首先考虑排男生的情况,有
第一种情况:两个老师被至少一个男生隔开,即在 n + 1 个间隙中选 2 个间隙插入 2 个老师,有
第二种情况:两个老师仅被一个女生隔开,即在 n + 1 个间隙中选 1 个间隙插入 2 个老师,由于两个老师有先后关系,故有
最后运用加法法则,得总排列数为
化简之,得
显然的,计算排列数要用高精度。由于 n * (n + 3) + m * 2 一项可能超过 10000,故若使用万进制可能出现整型溢出。笔者的解决方法是用超长整型储存,并使用亿进制解决乘数过大的问题。
代码如下:
#include"stdio.h"#include"string.h"long long answer[1500];void A(int n,int m){ if(m<0) return; while(m--) { for(int i=1;i<=answer[0];i++) answer[i]*=n; for(int i=1;i<=answer[0];i++) answer[i+1]+=answer[i]/100000000, answer[i]%=100000000; if(answer[answer[0]+1]>0) answer[0]++; n--; }}int main(){ freopen("queue.in","r",stdin); freopen("queue.out","w",stdout); int m,n; scanf("%d %d",&n,&m); memset(answer,0,sizeof(answer)); answer[0]=answer[1]=1; A(n+1,n+1),A(n+2,m-1),A(m>0?n*(n+3)+m*2:n,1); printf("%d",answer[answer[0]]); for(int i=answer[0]-1;i>0;i--) printf("%08d",answer[i]); return 0;}
0 0
- HNOI2012D1T3 排队 题解
- Noip2013火柴排队题解
- [noip2013]火柴排队 题解
- bzoj 3333: 排队计划 题解
- 201703-2 学生排队题解
- 【BZOJ】【P2729】【HNOI2012】【排队】【题解】【数学】
- 火柴排队(codevs 3286)题解
- 排队(差分约束)题解
- NOIp 2013 提高组 火柴排队 题解
- vijos1548:奶牛排队——题解
- 【基础练习】【离散化+逆序对】codevs3286 火柴排队题解
- BZOJ 2141 排队 分块+树状数组,详细题解
- NOIP 2013 火柴排队 题解(离散化+树状数组)
- 排队
- 排队
- 排队
- 排队
- 排队
- Paths in a Complete Binary Tree codeforces
- 魔方阵的实现(C语言)
- 文章标题
- Android 文本监听接口TextWatcher详解
- JAVA求学之路第六天
- HNOI2012D1T3 排队 题解
- SpringBoot的RabbitMQ消息队列: 五、第四模式"Routing"
- JAVA求学之路第七天
- XML约束之schema
- python出现ImportError: No module named 'xxx'问题
- hibernate.hql是对类进行查询的
- 闭包 && 综合题
- Java基础(8):面向对象—抽象类和接口的区别和各自特点
- JAVA求学之路第八天(集合)