【BZOJ2729】[HNOI2012]排队 组合数
【BZOJ2729】[HNOI2012]排队
Description
Input
Output
Sample Input
Sample Output
题解:先将老师与男生放到一起,然后将女生插到男生中间,方案书就是A(n+2,n+2)*A(n+3,m),再将老师相邻的方案减去,即将两个老师捆在一起,方案数为A(2,2)*A(n+1,n+1)*A(n+2,m)。
然后就是丧心病狂的高精度时间了。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
struct cbig
{
int len;
int v[200000];
cbig(){len=0,memset(v,0,sizeof(v));}
cbig(int x)
{
len=0,memset(v,0,sizeof(v));
while(x) v[++len]=x%10,x/=10;
}
void operator *= (int b)
{
int i;
for(i=1;i<=len;i++) v[i]*=b;
for(i=1;i<=len;i++) v[i+1]+=v[i]/10,v[i]%=10;
while(v[len+1]) len++,v[len+1]+=v[len]/10,v[len]%=10;
}
void operator -= (cbig b)
{
int i;
for(i=1;i<=b.len;i++) v[i]-=b.v[i];
for(i=1;i<=len;i++)
{
if(v[i]<0) v[i+1]+=v[i]/10,v[i]%=10;
if(v[i]<0) v[i+1]--,v[i]+=10;
}
while(len&&!v[len]) len--;
}
}ans1,ans2;
void A(cbig &ret,int a,int b)
{
for(int i=a-b+1;i<=a;i++) ret*=i;
}
int main()
{
int i,n,m;
scanf("%d%d",&n,&m);
ans1=cbig(1),A(ans1,n+2,n+2),A(ans1,n+3,m);
ans2=cbig(2),A(ans2,n+1,n+1),A(ans2,n+2,m);
ans1-=ans2;
if(!ans1.len) printf("0");
else for(i=ans1.len;i;i--) printf("%d",ans1.v[i]);
return 0;
}
【BZOJ2729】[HNOI2012]排队 组合数的更多相关文章
- BZOJ2729:[HNOI2012]排队(组合数学)
Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不 ...
- BZOJ2729 [HNOI2012]排队 【高精 + 组合数学】
题目链接 BZOJ2729 题解 高考数学题... 我们先把老师看做男生,女生插空站 如果两个老师相邻,我们把他们看做一个男生,女生插空站 对于\(n\)个男生\(m\)个女生的方案数: \[n!m! ...
- [BZOJ2729]:[HNOI2012]排队(组合数学)
题目传送门 题目描述 某中学有n名男同学,m名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的) ...
- [bzoj2729][HNOI2012]排队 题解 (排列组合 高精)
Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不 ...
- bzoj2729 [HNOI2012]排队
组合数学,推一下式子,并不难推. java代码 import java.io.*; import java.math.BigInteger; import java.util.*; public cl ...
- BZOJ2729 HNOI2012排队(组合数学+高精度)
组合入门题.高精度入门题. #include<iostream> #include<cstdio> #include<cstdlib> #include<cs ...
- [HNOI2012]排队 组合数
公式:A(n,n)*A(n+1,2)*A(n+3,m) + A(n,n)*C(m,1)*A(2,2)*C(n+1,1)*A(n+2,m-1) 分情况讨论推出公式 前者为无论何时都合法的,后者为先不合法 ...
- bzoj 2729: [HNOI2012]排队
2729: [HNOI2012]排队 Time Limit: 10 Sec Memory Limit: 128 MB Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体 ...
- 2729: [HNOI2012]排队
2729: [HNOI2012]排队 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 957 Solved: 449[Submit][Status] ...
随机推荐
- 【Visual Studio】The project appears to be under source control, but the associated source control plug-in is not installed on this computer
[问题描述]用 Visual Studio 2013打开一个项目时,出现下面错误: [问题原因]参考 http://codeverge.com/asp.net.web-forms/the-projec ...
- 诡异的malloc函数和%S的输出
今天测试代码过程中无意间发现,代码如下: #include <stdio.h> #include <string.h> #include <stdlib.h> #d ...
- 转载 linux 僵尸进程,讲的很透彻
僵尸进程的产生和避免,以及wait,waitpid的使用 在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitp ...
- Noip2016题解&总结
原文放在我的uoj博客上,既然新开了blog,那就移过来了 玩具谜题(toy) 送分题.没有什么好说的. 直接按照题目的要求模拟即可. 标准的noip式day1T1. #include<cstd ...
- FileChannel指南
推荐关注公众号:锅外的大佬 每日推送国外技术好文,帮助每位开发者更优秀地成长 原文链接:https://www.baeldung.com/java-filechannel 作者:baeldung 译者 ...
- BT原理分析(转)
BT种子文件结构分析,参考:http://www.cnblogs.com/EasonJim/p/6601047.html BT下载,参考:http://baike.baidu.com/item/BT下 ...
- Jenkins使用Pipeline插件实现多个Job之间的串并联(教程收集)(待实践)
在原始不使用插件时,在Jenkins我们要实现多个Job之间的连续集成时,我们一般的做法就是在每个Job上关联另一个Job,但是,这样做有个弊端,只能是连续的,如果要实现串或并联这样的,估计比较难:但 ...
- eclipse中通过search打开第二个文件时 第一个文件就自己关闭了
原文:http://blog.csdn.net/u014079773/article/details/66971053 问题:eclipse中通过search打开第二个文件时第一个文件就自己关闭了 问 ...
- arcgis andriod Edit features
来自:https://developers.arcgis.com/android/guide/edit-features.htm#ESRI_SECTION1_56C60DB71AF941E98668A ...
- DevExpress的GridControl如何实现打印和打印预览 z
第一种方法: System.Drawing.Printing.PageSettings set_print_page = new System.Drawing.Printing ...