[题解](排列组合)luogu_P3223排队
把老师和女生插到男生中间,先对男生排列:A(n,n),然后把老师插到n+1个空里:A(n+1,2),然后放入女生:A(n+3,m)
但是少考虑了老师之间由1个女生分开的情况,所以把三个人看作一个整体,内部也要排列一下,共A(n,n)*A(n+1,1)*A(2,2)*A(n+2,m-1)
用组合数同理
+高精
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
const int maxn=;
const ll base=;
int n,m;
struct bigint{
ll num[],len;
inline void clear(){
memset(num,,sizeof(num));
len=;
}
inline void give(int x){
num[len=]=x;
}
bigint operator *(const bigint&rhs)const{
bigint ans;ans.clear();ans.len=len+rhs.len+;
for(int i=;i<=len;i++)
for(int j=;j<=rhs.len;j++){
ans.num[i+j-]+=num[i]*rhs.num[j];
ans.num[i+j]+=ans.num[i+j-]/base;
ans.num[i+j-]%=base;
}
for(int i=;i<=ans.len;i++)
ans.num[i+]+=ans.num[i]/base,ans.num[i]%=base;
while(ans.len && !ans.num[ans.len])ans.len--;
return ans;
}
bigint operator +(const bigint &rhs)const{
bigint ans;ans.clear();ans.len=max(len,rhs.len)+;
for(int i=;i<=ans.len;i++){
ans.num[i]+=num[i]+rhs.num[i];
ans.num[i+]+=ans.num[i]/base;
ans.num[i]%=base;
}
for(int i=;i<=ans.len;i++)
ans.num[i+]+=ans.num[i]/base,ans.num[i]%=base;
while(ans.len && !ans.num[ans.len])ans.len--;
return ans;
}
inline void print(){
printf("%lld",num[len]);
for(int i=len-;i>=;i--)
printf("%05lld",num[i]);
}
}ans;
inline bigint cal(int n,int m){
bigint ans,x;ans.clear();
ans.give();
if(!m)return ans;
if(m>n){
ans.clear();return ans;
}
for(ll i=n-m+;i<=n;i++){
x.give(i);ans=ans*x;
}
return ans;
}
int main(){
scanf("%d%d",&n,&m);
ans=cal(n,n)*cal(n+,)*cal(n+,m)+cal(n,n)*cal(n+,)*cal(,)*cal(m,)*cal(n+,m-);
ans.print();
}
[题解](排列组合)luogu_P3223排队的更多相关文章
- [bzoj2729][HNOI2012]排队 题解 (排列组合 高精)
Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不 ...
- csp-s模拟测试10.1(b)X 国的军队,排列组合, 回文题解
题面:https://www.cnblogs.com/Juve/articles/11615883.html X 国的军队: 好像有O(T*N)的直接贪心做法 其实多带一个log的二分也可以过 先对所 ...
- hdu1521 排列组合(指数型母函数)
题意: 有n种物品,并且知道每种物品的数量ki.要求从中选出m件物品的排数. (全题文末) 知识点: 普通母函数 指数型母函数:(用来求解多重集的排列问题) n个元素,其中a1,a2, ...
- Codeforces Gym 100187D D. Holidays 排列组合
D. Holidays Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/problem/D ...
- Codeforces Round #309 (Div. 2) C. Kyoya and Colored Balls 排列组合
C. Kyoya and Colored Balls Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contes ...
- Day4:T3搜索 T4数学题排列组合
T3:搜索 很出名的题吧,费解的开关 同T2一样也是一题很考思考的 附上题解再解释吧: 对于每个状态,算法只需要枚举第一行改变哪些灯的状态,只要第一行的状态固定了,接下来的状态改变方法都是唯一的:每一 ...
- Day2:T3DP(基于排列组合思想)
T3:DP(基于排列组合思想的状态转移) 其实之前写排列组合的题目有一种很茫然的感觉.... 应该是因为之前没有刷过所以没有什么体会 上次刷的vj1060有用到,但是写状态转移还是第一次学习吧 ccy ...
- POJ1644状态转移的思想——排列组合
m个物品放n个盒子,盒子物品都相同,问你放的方法总数是多少 看着像个排列组合,算着算着就发现我排列组合都忘得差不多啦,哎,什么时候能打败遗忘呢 然后想用dp做,但是转移的方面没有想好 看了看题解感觉这 ...
- 【BZOJ】2111: [ZJOI2010]Perm 排列计数 计数DP+排列组合+lucas
[题目]BZOJ 2111 [题意]求有多少1~n的排列,满足\(A_i>A_{\frac{i}{2}}\),输出对p取模的结果.\(n \leq 10^6,p \leq 10^9\),p是素数 ...
- 【COGS】2287:[HZOI 2015]疯狂的机器人 FFT+卡特兰数+排列组合
[题意][COGS 2287][HZOI 2015]疯狂的机器人 [算法]FFT+卡特兰数+排列组合 [题解]先考虑一维的情况,支持+1和-1,前缀和不能为负数,就是卡特兰数的形式. 设C(n)表示第 ...
随机推荐
- Hibernate - 配置c3p0
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuratio ...
- 【leetcode刷题笔记】Plus One
Given a non-negative number represented as an array of digits, plus one to the number. The digits ar ...
- Oracle 12C 新特性之在线重命名、迁移活跃的数据文件
Oracle 数据库 12c 版本中对数据文件的迁移或重命名不再需要太多繁琐的步骤,可以使用 ALTER DATABASE MOVE DATAFILE 这样的 SQL 语句对数据文件进行在线重命名和移 ...
- 动态webService
using System; using System.Net; using System.IO; using System.CodeDom; using Microsoft.CSharp; using ...
- POJ2513(字典树+图的连通性判断)
//用map映射TLE,字典树就AC了#include"cstdio" #include"set" using namespace std; ; ;//26个小 ...
- mina中的发送延时
由于项目需要,用到了 mina 框架进行 tcp 通讯.我是初次接触 mina,于是从 Hello world 开始学习了 mina .期间遇到了一个奇怪的发送数据的延迟问题,解决的过程是曲折的,但找 ...
- 人物-IT-刘强东:刘强东
ylbtech-人物-IT-刘强东:刘强东 刘强东,男,汉族,1973年3月10日生(另一说法:1974年2月14日),江苏宿迁人,祖籍湖南湘潭 .京东集团董事局主席兼首席执行官,本科毕业于中国人民大 ...
- JS开发中的一些小技巧和方法
生成指定范围内的随机数 当我们需要获取指定范围(min,max)内的整数的时候,下面的代码非常适合:这段代码用的还挺多的. function setRadomNum(min,max){ return ...
- Python函数(十一)-生成器
首先看一下什么是列表生成式 >>> [i*2 for i in range(10)] [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] >>> ...
- 关于cin
今天同学调试一个简单的程序的时候发现了问题,我们两个讨论的时候弄出了好多乐子 #include <iostream> using namespace std; int main() { ; ...