zoukankan      html  css  js  c++  java
  • SDOI 2016 排列计数

    题目大意:一个数列A,n个元素,其中m个元素不动,其他元素均不在相应位置,问有多少种排列

    保证m个元素不动,组合数学直接计算,剩余元素错位排列一下即可

    #include<bits/stdc++.h>
    #define ll long long
    #define mod 1000000007
    using namespace std;
    int fac[1000010];
    int inv[1000010];
    int f[1000010];
    int T,n,m;
    int power(int x,int y){
        int s=1;
        while(y){
            if(y&1)s=1ll*s*x%mod;
            y>>=1,x=1ll*x*x%mod;
        }return s;
    }
    inline int read(){
        int s=0;char ch=getchar();
        for(;ch<'0'||ch>'9';ch=getchar());
        for(;ch>='0'&&ch<='9';ch=getchar())s=s*10+ch-'0';
        return s;
    }
    int main(){
        freopen("menci_permutation.in","r",stdin);
        freopen("menci_permutation.out","w",stdout);
        fac[0]=1;
        for(int i=1;i<=1000000;++i)fac[i]=1ll*fac[i-1]*i%mod;
        inv[1000000]=power(fac[1000000],mod-2);inv[0]=1;
        for(int i=1000000-1;i;--i)inv[i]=1ll*inv[i+1]*(i+1)%mod;
        f[1]=0;f[2]=1;f[0]=1;
        for(int i=3;i<=1000000;++i)f[i]=1ll*(i-1)*(f[i-1]+f[i-2])%mod;
        T=read();
        while(T--){
            n=read();m=read();
            printf("%d
    ",1ll*fac[n]*inv[m]%mod*inv[n-m]%mod*f[n-m]%mod);
        }return 0;
    }
    View Code
  • 相关阅读:
    [HNOI2010]CITY 城市建设

    [HNOI2011]数学作业
    [NOI2012]美食节
    [HEOI2014]大工程
    [HEOI2013]ALO(待更)
    [HEOI2016/TJOI2016]序列
    贪食蛇(未完待续)
    [HEOI2016/TJOI2016]字符串
    bzoj 2437[Noi2011]兔兔与蛋蛋 黑白染色二分图+博弈+匈牙利新姿势
  • 原文地址:https://www.cnblogs.com/117208-/p/5379982.html
Copyright © 2011-2022 走看看