zoukankan      html  css  js  c++  java
  • 2729:[HNOI2012]排队

    题目描述 Description
    某中学有n 名男同学,m 名女同学和两名老师要排队参加体检。他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的)
    输入描述 Input Description
    输入文件只有一行且为用空格隔开的两个非负整数n 和m,其含义如上所述。
    输出描述 Output Description
    仅包含一个非负整数,表示不同的排法个数。注意答案可能很大。
    样例输入 Sample Input
    样例输入1
    1 1

    样例输入2
    7 3
    样例输出 Sample Output
    样例输出1
    12

    样例输出2
    220631040
    数据范围及提示 Data Size & Hint
    对于30%的数据n≤100,m≤100
    对于100%的数据n≤2000,m≤2000


    先把老师和男同学放在一起,把女生插进来
    再减去两个老师在一起的情况,经过化简
    ANS=(n+1)!A(n+2,m-1)*(n^2+3*n+2*m)
    然后就是高精度了

     1 const
     2     h=1000000;
     3 var
     4     a:array[0..10000]of int64;
     5     n,m:longint;
     6 
     7 procedure cheng(x:int64);
     8 var
     9     i:longint;
    10 begin
    11     for i:=1 to a[0] do
    12       a[i]:=a[i]*x;
    13     for i:=1 to a[0] do
    14       begin
    15         inc(a[i+1],a[i]div h);
    16         a[i]:=a[i]mod h;
    17       end;
    18     i:=a[0]+1;
    19     while a[i]>0 do
    20       begin
    21         inc(a[0]);
    22         inc(a[i+1],a[i] div h);
    23         a[i]:=a[i]mod h;
    24         inc(i);
    25       end;
    26 end;
    27 
    28 procedure main;
    29 var
    30     i,k:longint;
    31 begin
    32     read(n,m);
    33     a[0]:=1;
    34     a[1]:=n*n+3*n+2*m;
    35     for i:=2 to n+1 do
    36       cheng(i);
    37     for i:=1 to m-1 do
    38       cheng(n+3-i);
    39     write(a[a[0]]);
    40     for i:=a[0]-1 downto 1 do
    41       begin
    42         k:=h div 10;
    43         while k>1 do
    44           begin
    45             if a[i]<k then write(0);
    46             k:=k div 10;
    47           end;
    48         write(a[i]);
    49       end;
    50 end;
    51 
    52 begin
    53     main;
    54 end.
    View Code
  • 相关阅读:
    codevs1074 食物链
    Zjnu Stadium(加权并查集)
    加权并查集(银河英雄传说,Cube Stacking)
    Candies
    SPFA(热浪)
    trie树模板(统计难题)
    你有多久没有看过星星
    欧拉通路、回路
    exkmp
    Number Sequence (HDU 1711)
  • 原文地址:https://www.cnblogs.com/Randolph87/p/3582392.html
Copyright © 2011-2022 走看看