zoukankan      html  css  js  c++  java
  • BZOJ 5305: [Haoi2018]苹果树 组合计数

    一定要注意要乘阶乘,细节很多. 

    code: 

    #include <bits/stdc++.h> 
    #define ll long long 
    #define setIO(s) freopen(s".in","r",stdin)   
    using namespace std;  
    const int N=2007;  
    int n,mod;  
    int C[N][N],fac[N],g[N],f[N];   
    void Init() 
    {
        fac[0]=C[0][0]=1;  
        for(int i=1;i<=n;++i) 
        {
            C[i][0]=C[i][i]=1;  
            fac[i]=(ll)fac[i-1]*i%mod;   
            for(int j=1;j<=i-1;++j)  C[i][j]=(ll)(C[i-1][j]+C[i-1][j-1])%mod;   
        }
    } 
    int main() 
    {  
        // setIO("input");   
        scanf("%d%d",&n,&mod); 
        Init();  
        f[1]=1; 
        for(int i=2;i<=n;++i) 
        {
            for(int L=0;L<=i-1;++L) 
            {
                int R=i-1-L,F=0,G=0;              
                F=(ll)((ll)f[L]*fac[R]%mod+(ll)f[R]*fac[L]%mod)%mod;         
                G=(1ll*f[L]*fac[R]%mod*(R+1)%mod)%mod;     
                G=(G+1ll*f[R]*fac[L]%mod*(L+1)%mod)%mod;     
                G=(G+1ll*g[L]*fac[R]%mod)%mod;  
                G=(G+1ll*g[R]*fac[L]%mod)%mod;     
                f[i]=(f[i]+1ll*C[i-1][L]*F%mod)%mod;  
                g[i]=(g[i]+1ll*C[i-1][L]*G%mod)%mod;  
            }
            f[i]=(ll)(f[i]+(ll)i*fac[i]%mod)%mod;           
        }
        printf("%d
    ",g[n]);     
        return 0; 
    }
    

      

  • 相关阅读:
    centos崩溃后如何修复
    乘法是啥
    接上篇—用spring注入DBbean,并使用maven管理
    技术产生价值
    技术?
    世界的本质是啥呢
    java-web 登陆功能
    对java的理解
    数学的历史
    使用jmeter测试接口
  • 原文地址:https://www.cnblogs.com/guangheli/p/11955592.html
Copyright © 2011-2022 走看看