• HDU 5894 hannnnah_j’s Biological Test


    题目链接:传送门

    题目大意:有n张板凳围成一圈,有m个人,要让m个人都坐到凳子上且任意两人之间相隔>=k 个凳子,问有多少种方法%(1e9+7)

    题目思路:组合数学

         我们这样考虑,既然每个人相距>=k 个凳子,m个人就至少有m*k个凳子不能坐人,那我们先从中抽出这m*k个凳子,其它

         凳子都可以坐了,然后我们考虑第一个人坐到了一个位置上,剩下的人就有C(n-m*k-1,m-1)种坐法,而第一个人有n种

         初始选择,但由于m个人又相同,故应该是C(n-m*k-1,m-1)*n/m种坐法。

         Note:一定要注意%MOD,不然中间会爆long long,我就被坑了40min。。。。。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <cmath>
     5 #include <algorithm>
     6 #include <cstring>
     7 #include <stack>
     8 #include <cctype>
     9 #include <queue>
    10 #include <string>
    11 #include <vector>
    12 #include <set>
    13 #include <map>
    14 #include <climits>
    15 #define lson rt<<1,l,mid
    16 #define rson rt<<1|1,mid+1,r
    17 #define fi first
    18 #define se second
    19 #define ping(x,y) ((x-y)*(x-y))
    20 #define mst(x,y) memset(x,y,sizeof(x))
    21 #define mcp(x,y) memcpy(x,y,sizeof(y))
    22 using namespace std;
    23 #define gamma 0.5772156649015328606065120
    24 #define MOD 1000000007
    25 #define inf 0x3f3f3f3f
    26 #define N 1000050
    27 #define maxn 3001
    28 typedef pair<int,int> PII;
    29 typedef long long LL;
    30 
    31 int n,m,k,x,y,v;
    32 LL fac[N];
    33 LL ksm(LL a,LL b){
    34     LL res=1;
    35     while(b){
    36         if(b&1)res=res*a%MOD;
    37         b>>=1;
    38         a=a*a%MOD;
    39     }
    40     return res;
    41 }
    42 LL C(LL n,LL m){
    43     if(m>n||m<0)return 0;
    44     LL s1=fac[n],s2=fac[n-m]*fac[m]%MOD;
    45     return s1*ksm(s2,MOD-2)%MOD;
    46 }
    47 int main(){
    48     int i,j,group;
    49     fac[0]=1ll;for(i=1;i<N;++i)fac[i]=fac[i-1]*i%MOD;
    50     scanf("%d",&group);
    51     while(group--){
    52         scanf("%d%d%d",&n,&m,&k);
    53         if(m==1){printf("%d
    ",n);continue;}
    54         if(n<m*(k+1)){printf("0
    ");continue;}
    55         printf("%lld
    ",1ll*C(n-m*k-1,m-1)*n%MOD*ksm(m,MOD-2)%MOD);
    56     }
    57     return 0;
    58 }
  • 相关阅读:
    MySQL高级查询总结
    MySQL数据库作业
    MySQLdump备份还原命令
    MySQL之Join
    MySQL课堂作业(一)
    Mysql数据库
    Js实例之简易计算器
    JS系统函数
    js课堂作业之转换月份
    C++ Name Mangling 为什么不编码返回值参数
  • 原文地址:https://www.cnblogs.com/Kurokey/p/5888144.html
Copyright © 2020-2023  润新知