Luogu P3223 [HNOI2012]排队 组合
本来做了一道 P4901 排队 后来发现自己做错题了。。。到也都是数学qwq
这题最恶心的就是两只(雾)老师。
那我们分类讨论:
1.两个老师之间是男生:
$ A(n,n)*A(n+1,2)*A(n+3,m) $
首先男生有$ A(n,n)=n! $种排列方式;然后有$ n+1$ 个空隙(加上开头和结尾)可以放老师,所以老师是$ A(n+1,2)=(n+1)!/(n+1-2)!=(n+1)*n$;然后有$ n+3$ 个空隙(加上开头和结尾)可以放女生,所以女生是$ A(n+3,m)=\frac{(n+3)!}{(n+3-m)!}$
2.两个老师之间是女生(相当于捆绑):
$A(n,n)*A(2,2)*m*A(n+1,1)*A(n+2,m-1)$
首先男生有$ A(n,n)=n! $种排列方式;老师按先后分有$A(2,2)=2$种排列;然后女生中任取$1$个有$m$种;然后有$ n+1$ 个空隙(加上开头和结尾)可以放 老师+女生+老师(捆绑),所以 老师+女生+老师一个整体的位置 是$ A(n+1,1)=(n+1)!$;然后有$ n+2$ 个空隙(加上开头和结尾,并且 老师+女生+老师 看作一个整体)可以放$m-1$女生,所以女生是$ A(n+2,m-1)=\frac{(n+2)!}{(n+3-m)!}$
所以原式:$A(n,n)*A(n+1,2)*A(n+3,m)+A(n,n)*A(2,2)*m*A(n+1,1)*A(n+2,m-1)$
化简可得:$\frac{(n+1)!*(n+2)*(n^2+3*n+2*m)}{(n+3-m)!}$
然后自己死在了scanf上:少写了一个%d...fk
#include<cstdio>
#include<iostream>
#define R register int
using namespace std;
const long long B=10000000000ll;
int n,m,sz=;
long long ans[];
inline void mul(int x) { R tmp=;
for(R i=;i<=sz;++i) ans[i]*=x,ans[i]+=tmp,tmp=ans[i]/B,ans[i]%=B;
if(tmp) ++sz,ans[sz]=tmp;
}
signed main() {
scanf("%d%d",&n,&m); ans[]=;
for(R i=;i<=n+;++i) mul(i); mul(n*(n+)+*m);
for(R i=n-m+;i<=n+;++i) mul(i); //cout<<sz<<endl;
printf("%lld",ans[sz]); for(R i=sz-;i;--i) printf("%010lld",ans[i]); putchar('\n');
}
2019.05.17
Luogu P3223 [HNOI2012]排队 组合的更多相关文章
- luogu P3223 [HNOI2012]排队
LINK:排队\ 原谅我没学过组合数学 没有高中数学基础水平... 不过凭着隔板法的应用还是可以推出来的. 首先考虑女生 发现一个排列数m! 两个女生不能相邻 那么理论上来说存在无解的情况 而这道题好 ...
- 洛谷 P3223 [HNOI2012]排队
题目描述 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的) 输入输 ...
- P3223 [HNOI2012]排队
题目描述 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的) 输入输 ...
- 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] ...
- [Luogu 3224] HNOI2012 永无乡
[Luogu 3224] HNOI2012 永无乡 特别水一个平衡树题. 不认真的代价是调试时间指数增长. 我写的 SBT,因为 Treap 的 rand() 实在写够了. 用并查集维护这些点的关系, ...
- 【BZOJ2729】[HNOI2012]排队 组合数
[BZOJ2729][HNOI2012]排队 Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那 ...
- luogu P1966 火柴排队 (逆序对)
luogu P1966 火柴排队 题目链接:https://www.luogu.org/problemnew/show/P1966 显然贪心的想,排名一样的数相减是最优的. 证明也很简单. 此处就不证 ...
- BZOJ 2729: [HNOI2012]排队 排列组合 + 高精度
Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不 ...
随机推荐
- ACM学习历程—HDU5407 CRB and Candies(数论)
Problem Description CRB has N different candies. He is going to eat K candies.He wonders how many co ...
- shock编程
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序.要学Internet上的TCP/IP网络编程,必须理解Socket ...
- swift-get-nodes简单使用
在参考http://blog.csdn.net/cywosp/article/details/12850645文章对对象的具体物理磁盘位置进行查找时,发现两个问题: 1. 在使用swift+keyst ...
- shell入门-awk-2
awk的条件操作符 ///显示第一段有root的行 [root@wangshaojun ~]# awk -F ':' '$1=="root"' 1.txtroot:x:0:0:ro ...
- 韩顺平循序渐进学JAVA从入门到精通 视频全套,需要的联系我
0讲-开山篇.avi 10讲-访问修饰符.重载.覆盖.avi 11讲-约瑟夫问题.avi 12讲-多态.avi 13讲-抽象类.接口.avi 14讲-final.作业评讲.avi 15讲-作业.测试题 ...
- 洛谷-关押罪犯-NOIP2010提高组复赛
题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整数值)来表示 ...
- JavaScript的内部对象
JavaScript的内部对象 按创建方式不同分为:使用变量声明的隐性对象,使用new创建的显性对象 隐性对象 在赋值和声明后就是一个隐性对象,隐性对象不支持prototype属性,也无法随意扩展对象 ...
- Java基础——java中String、StringBuffer、StringBuilder的区别
(转自:http://www.cnblogs.com/xudong-bupt/p/3961159.html) java中String.StringBuffer.StringBuilder是编程中经常使 ...
- DMA缓冲区乒乓操作的处理
http://www.51hei.com/bbs/dpj-141761-1.html https://blog.csdn.net/sunnydreamrain/article/details/8288 ...
- Python中的try和except语句
Python中是通过缩进来解析代码块的,要特别注意tab和空格符,两者不可以混用,通常情况下用四个空格来代替tab键 下面通过一个简单的例子来说明 提示用户输入工作的时间和每小时的时薪,如果超过40个 ...