因为实在是写不动了,所以菜鸡颓博客为了信奥发展的伟大未来作出一点小小的贡献

题目描述

某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检。他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的)

输入格式

只有一行且为用空格隔开的两个非负整数 n 和 m,其含义如上所述。
对于 30%的数据 n≤100,m≤100
对于 100%的数据 n≤2000,m≤2000

输出格式

输出文件 output.txt 仅包含一个非负整数,表示不同的排法个数。注意答案可能很大。

样例输入

1 1

样例输出

   12

题解:这是一道组合数学,应该说是非常明显。首先我们需要一个数奥生思路开始要正确。我们选择固定男生和老师,然后将女生插空,貌似如果固定女生的式子会非常麻烦。我写到一半果断放弃了固定男生时是A(n,n);固定老师时分两种情况:老师卡在一起,也就是老师一起站在两个男生中间,是A(2,2),这时需要一个女生站在老师中间,总式子变成A(n,n)*(n+1)*A(2,2)*A(n+2,m-1),m-1在上面。或者老师没有卡在一起,是A(n+1,2),然后女生插空,总式子变成A(n,n)*A(n+1,2)*A(n+3,m).合并式子,最终是n!*(2*m+n*(n+3))*(n+1)*(n+2)!/(n-m+3)!。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #define maxn 100010
 5 using namespace std;
 6 int n,m,a[maxn],b[maxn],c[maxn];
 7 void mult(int a[],int b)
 8 {
 9     int x=0;
10     for(int i=1;i<=a[0];i++)
11     {
12         int tmp=a[i]*b+x;
13         a[i]=tmp%10;
14         x=tmp/10;
15     }
16     while(x)
17     {
18         a[++a[0]]=x%10;
19         x/=10;
20     }
21 }
22
23 int main()
24 {
25     scanf("%d%d",&n,&m);a[0]=a[1]=1;
26     for(int i=1;i<=n;i++) mult(a,i);
27     mult(a,(2*m+n*(n+3)));
28     mult(a,n+1);
29     for(int i=n-m+4;i<=n+2;i++) mult(a,i);
30     for(int i=a[0];i>0;i--) printf("%d",a[i]);
31     return 0;
32 }

代码

大概就是这样。
 

转载于:https://www.cnblogs.com/MouDing/p/11121426.html

排队 题解 组合数学+高精度相关推荐

  1. BZOJ4943 洛谷3823 UOJ315:[NOI2017]蚯蚓排队——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4943 http://uoj.ac/problem/315 https://www.luogu.or ...

  2. [bzoj2729][HNOI2012]排队 题解 (排列组合 高精)

    Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不 ...

  3. P1966 火柴排队题解

    P1966 火柴排队 题意:有两列火柴,各有各的高度,两两高度不同,每次只能交换相邻的数,问最少交换多少次,使得 ∑ ( a i − b i ) 2 \sum (a_i-b_i)^2 ∑(ai​−bi ...

  4. 洛谷 1966 loj 2069 火柴排队 题解

    博客观赏效果更佳 题意简述 给定两个数列 a , b a,b a,b,长度均为 n ( < = 100000 ) n(<=100000) n(<=100000), a , b a,b ...

  5. c语言程序设计医院排队功能,[信息学奥赛一本通-T1183]病人排队-题解(C语言代码)...

    解题思路:通过年龄是否大于等于60作判断,当年龄大于等于60时,记录当前数据,当前数据之前的数据全部后移一位,把当前数据放到第一位.循环n(人数)次 注意事项: 参考代码: #include stru ...

  6. 牛客题霸 [ 大数乘法] C++题解/答案

    牛客题霸 [ 大数乘法] C++题解/答案 题目描述 以字符串的形式读入两个数字,编写一个函数计算它们的乘积,以字符串形式返回. (字符串长度不大于10000,保证字符串仅由'0'~'9'这10种字符 ...

  7. Luogu P1497题解

    题目描述: 有一个n * n的方形区域,同时你有k个木牛流马,同时这k个木牛流马有h种颜色,现在规定两个木牛流马不能同时存在于一行或者一列里面,现在问有几种放置方法? 题解 组合数学问题,这个题目整体 ...

  8. Codevs 2505 上学路线 (组合数学)

    2505 上学路线 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题目描述 Description 因为是学生,所以显然小A每天都要上学.小A所在的城市的道路构 ...

  9. NOIP大纲整理:(零)历年2000-2016NOIP提高组题目分析

    年份 题目名称 考查内容 难度   2000-2016年NOIP提高组复赛题目 2000-A 进制转换 初等代数,找规律 ★ 2000-B 乘积最大 资源分配DP ★★★ 2000-C 单词接龙 DF ...

最新文章

  1. c语言条件编译的例子,C语言条件编译分析实例
  2. linux重启网络服务_vm上linux虚拟机NAT模式配置
  3. 数据结构基础(10) --单链表迭代器的设计与实现
  4. 练习1.account表 添加一条记录
  5. 在本地电脑搭建一个网站 转自本文地址:http://www.fengzimo.com/1503.html 来源 疯子墨...
  6. Cow Roller Coaster
  7. 华为历届笔试面试题整理大全
  8. 数据库-MySQL约束-笔记
  9. Eclipse之各个版本的区别
  10. 关于Java观察者模式的一点思考
  11. _stdcall相关
  12. 人人网主页登录_“人人”归来!有人想找前女友,有人想删“黑历史”
  13. undefined symbol 问题解决记录
  14. javaSE之异常详解(1)
  15. android代码获取deviceid,获取安卓系统的设备id用getDeviceId()函数
  16. 202203 word中的表格 实现 外框线粗 内部线细
  17. Web前端开发掌握的技术
  18. 【tm1650调试记录】
  19. 基于JAVA的企业信息员工管理系统的设计与实现(附:源码 论文 sql文件)
  20. xmm1是什么器件_模拟电子技术multisim仿真1二极管特性仿真.ppt

热门文章

  1. Python基础-变量作用域
  2. canvas绘制线条1像素的问题
  3. 【转】error while loading shared libraries: xxx.so.x 错误的原因和解决办法
  4. 迁移DirectX11到VS2015 Win10
  5. python3字符串属性(二)
  6. 使用公用表表达式的递归查询
  7. [LeetCode]Integer to Roman
  8. Cortex-M3 动态加载一(地址无关代码实现)
  9. 文件读取ini文件另一种读取办法
  10. mysql“Access denied for user 'root'@'localhost'”问题的解决