2729: [HNOI2012]排队

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 957  Solved: 449
[Submit][Status]

Description

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

Input

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

Output

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

Sample Input

1 1

Sample Output

12

HINT

Source

day1

题解:做完此题发现我还是摆脱不了逗比的本性——好好的高精度,结果输出时弄反了。。。呵呵呵。。。典型的对自己自信过头的后果
说思路吧:经典的插空思想,男生爱咋搞砸搞,于是N!,然后接下来轮到妹纸和Teacher,老师不在一起时,则很明显情况为m*C(n+1,1)*C(n+2,m-1)也就是m*(n+1)*C(n+2,m-1),在一起时就是C(n+3,m)*C(n+1,2),然后直接求和没了,高精度啥的是显然的。。。只求别在逗比TT

 1 /**************************************************************
 2     Problem: 2729
 3     User: HansBug
 4     Language: Pascal
 5     Result: Accepted
 6     Time:1920 ms
 7     Memory:1008 kb
 8 ****************************************************************/
 9
10 type
11         arr=array [0..100001] of longint;
12 var
13         i,j,k,l,m,n,a1,a2,a3,a4:longint;
14         a,b:arr;
15 procedure multy (var a:arr; b:longint);inline;
16 var
17         i:longint;
18 begin
19         for i:=1 to a[0] do a[i]:=a[i]*b;
20         i:=1;
21         while (i<=a[0])or(a[i]>0) do
22                 begin
23                         a[i+1]:=a[i+1]+a[i] div 10;
24                         a[i]:=a[i] mod 10;
25                         inc(i);
26                 end;
27         dec(i);
28         a[0]:=i;
29 end;
30
31 procedure addty (var a,b:arr);inline;
32 var
33         i,k:longint;
34 begin
35         if a[0]>b[0] then k:=a[0] else k:=b[0];
36         for i:=1 to k do
37                 begin
38                         a[i]:=a[i]+b[i];
39                         a[i+1]:=a[i+1]+a[i] div 10;
40                         a[i]:=a[i] mod 10;
41                 end;
42         if a[k+1]<>0 then inc(k);
43         a[0]:=k;
44 end;
45
46 begin
47         readln(n,m);
48         if (n=0)and(m=0) then begin writeln(0);halt; end;
49     fillchar(b,sizeof(b),0);
50         b[1]:=1;  b[0]:=1;
51         multy(b,n+1);
52         multy(b,2);
53         multy(b,m);
54         for i:=n+2-m+2 to n+2 do multy(b,i);
55         a:=b;
56         fillchar(b,sizeof(b),0);
57         b[0]:=1;  b[1]:=1;
58         multy(b,n+1);
59         multy(b,n);
60         for i:=n+4-m to n+3 do multy(b,i);
61         addty(a,b);
62         for i:=2 to n do multy(a,i);
63         for i:=a[0] downto 1 do write(a[i]);
64         writeln;
65 end.  

转载于:https://www.cnblogs.com/HansBug/p/4282021.html

2729: [HNOI2012]排队相关推荐

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

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

  2. [HNOI2012]排队

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

  3. P3223 [HNOI2012]排队(高中排列组合)

    传送门 题意 nnn个男生,mmm个女生,222个老师排队 女生和女生不能相邻,老师和老师不能相邻,问方案数. 考虑到老师只有两个,所以可以对老师来讨论. Ⅰ.\color{Red}Ⅰ.Ⅰ.两只老师间 ...

  4. bzoj2729: [HNOI2012]排队

    高精度+排列组合. 如果计算老师能挨在一起的情况 有 (n+2)! * A(n+3,m) 老师一定挨宰一起的情况 有 2*(n+1)!*A(n+2,m). 相减就是答案. #include<cs ...

  5. BZOJ2729 [HNOI2012]排队 【高精 + 组合数学】

    题目链接 BZOJ2729 题解 高考数学题... 我们先把老师看做男生,女生插空站 如果两个老师相邻,我们把他们看做一个男生,女生插空站 对于\(n\)个男生\(m\)个女生的方案数: \[n!m! ...

  6. 数论三之排列组合Ⅱ——Virus Tree 2,RGB Coloring,123 Triangle,排列计数,排队,卡农

    丝且人一口 Virus Tree 2 description solution code RGB Coloring description solution code 123 Triangle des ...

  7. # HNOI2012 ~ HNOI2018 题解

    HNOI2012 题解 [HNOI2012]永无乡 Tag:线段树合并.启发式合并 联通块合并问题. 属于\(easy\)题,直接线段树合并 或 启发式合并即可. [HNOI2012]排队 Tag:组 ...

  8. 2019.4.summary

    2019.4.1 BZOJ1061: [Noi2008]志愿者招募 真心有点难QAQ https://www.byvoid.com/zhs/blog/noi-2008-employee 看void爷的 ...

  9. 【青少年编程】【蓝桥杯】排队购票

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 我们将有关编程题目的教学视频已经发布到抖 ...

最新文章

  1. 每日一皮:一个项目开发的真实写照...
  2. pythonista3使用教程-pythonista3都能做什么
  3. 外挂学习之路(15)---lua语言的使用,
  4. liunx之Centos6.8杀毒软件的安装
  5. Source Insight上手教程
  6. javascript相等运算符与等同运算符(转自www.jqueryba.com)
  7. 10天智能锁项目实战第1天(了解单片机STM32F401RET6和C语言基础)
  8. [Jsoi2010]连通数
  9. hdu 1754 I hate it (线段树)
  10. 微信小程序 手写签名_【微信小程序canvas】实现小程序手写板用户签名(附代码)...
  11. 记录Elastic Job服务处于下线状态排查
  12. 流量卡之家:5G手机价格没那么“邪性” 门槛降低一半
  13. Cisco Encrypted Traffic Analysis(ETA)
  14. 毕业设计 stm32车牌识别系统设计与实现 - 单片机 嵌入式
  15. 中国大学mooc慕课python答案_中国大学mooc慕课_Python游戏开发入门_章节测试答案...
  16. matlab 判断矩阵是否正定
  17. 雷达干扰技术(二)数字干扰合成及相关技术
  18. No converter for [class com.defei.sms.result.Result] with preset Content-Type ‘null‘
  19. 分享一个挺不错的Git视频教程
  20. 微信公众号用什么软件编辑?

热门文章

  1. 铃儿响叮当用计算机怎么弹,铃儿响叮当钢琴弹奏教学视频
  2. 领导让我重写测试代码,我该怎么办?
  3. python运维案例开发_python运维开发之第六天
  4. java语言程序设计期中考试_《java语言程序设计》期中试卷(答案).doc
  5. linux打印显示etc中的文件,Linux命令之文件内容查看(cat、tac、nl、more、less、head、tail)...
  6. oracle占位符怎么打,PL/SQL Challenge 每日一题:2018-7-11 动态SQL中的占位符
  7. redis 公网 安全_redis配置之安全配置
  8. 小米温控配置不见了_小米11值得买吗?目前看来功耗很高啊?
  9. linux文件自动改名,C#如何在生成文件夹或者文件时候自动重命名
  10. Docker组队学习(三)