2729: [HNOI2012]排队
时间:2022-05-07
本文章向大家介绍2729: [HNOI2012]排队,主要内容包括2729: [HNOI2012]排队、Description、Input、Output、Sample Input、Sample Output、HINT、Source、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
2729: [HNOI2012]排队
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 957 Solved: 449
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
题解:做完此题发现我还是摆脱不了逗比的本性——好好的高精度,结果输出时弄反了。。。呵呵呵。。。典型的对自己自信过头的后果 说思路吧:经典的插空思想,男生爱咋搞砸搞,于是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.
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- OpenGL ES 3.0 | 围绕HelloTriangle实战案例 展开 渲染流程分析
- 基于 Kotlin + Netty 实现一个简单的 TCP 自定义协议
- dnslog带出——sqli-labs第8关
- Boolean源码解剖学
- SpringBoot+Mybatis整合出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found
- xss-labs第1~13关
- 在虚拟机上搭建xss平台
- 一个速度快,内存占用小的一致性哈希算法
- 一文搞定web微信第三方登录
- python学习笔记(1)
- Swift Mutating
- 31.opengl高级光照-泛光bloom
- Swift 泛型
- Swift高阶函数map,filter,reduce
- 一文解决大批量基因相关性分析