zoukankan      html  css  js  c++  java
  • [题解](prufer)明明的烦恼

    https://www.cnblogs.com/noip/archive/2013/03/10/2952520.html

    以及高精(抄

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    
    int n,cnt,d[1050],sum,tot;
    struct bigint{
        int num[10000],len;
        bigint(){
            memset(num,0,sizeof(num));
            len=1;
        }
        bigint operator*(const int &rhs)const{
            bigint ans;
            ans.len=len+6;
            for(int i=1;i<=len;i++)ans.num[i]+=num[i]*rhs;
            for(int i=1;i<ans.len;i++)
            if(ans.num[i]>9){
                ans.num[i+1]+=ans.num[i]/10;
                ans.num[i]%=10;
            }
            while(!ans.num[--ans.len]);
            return ans;
        }
        bigint operator/(const int &rhs)const{
            bigint ans=*this;
            ans.len++;
            for(int i=ans.len;i;i--){
                ans.num[i-1]+=ans.num[i]%rhs*10;
                ans.num[i]/=rhs;
            }
            while(!ans.num[--ans.len]);
            return ans;
        }
    }ans;
    signed main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&d[i]);
            if(!d[i]){
                printf("0");return 0;
            }
            if(d[i]!=-1){
                sum+=d[i]-1;
                cnt++;
            }
        }
        if(sum>2*n-2){
            printf("0");return 0;
        }
        ans.num[1]=1;
        for(int i=n-1-sum;i<n-1;i++)
        ans=ans*i;
        for(int i=1;i<=n-2-sum;i++)
        ans=ans*(n-cnt);
        for(int i=1;i<=n;i++){
            for(int j=2;j<=d[i]-1;j++)
            ans=ans/j;
        }
        for(int i=ans.len;i;i--)
        printf("%d",ans.num[i]);
    }
  • 相关阅读:
    [牛客]十二桥问题 解题报告
    [NOIP2017 逛公园] 解题报告
    [JSOI2008]最小生成树计数 解题报告
    类欧几里得算法
    概率与期望题目列表
    [SCOI2008]配对 解题报告
    拦截导弹
    牛客网-约数的个数
    牛客网-成绩排名
    最大连续区间和的算法总结
  • 原文地址:https://www.cnblogs.com/superminivan/p/10877820.html
Copyright © 2011-2022 走看看