zoukankan      html  css  js  c++  java
  • [bzo1211][HNOI2004]树的计数_prufer序列

    树的计数 bzoj-1211 HNOI-2004

    题目大意题目链接

    注释:略。


    想法

    prufer序列有一个性质就是一个数在prufer序列中出现的次数等于这个prufer序列生成的树中它的度数-1。

    故此我们就是要求$C_{n-2}^{d_1-1} imes C_{n-2-d_1+1}^{d_2-1} imes cdots imes C_{d_n-1}^{d_n-1}$。

    随便搞搞就行了。

    Code:

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define M 160
    using namespace std;
    typedef long long ll;
    int n,sum,d[M];
    int cnt[M];
    ll ans=1;
    ll Quick_Power(ll x,int y)
    {
    	ll re=1;
    	while(y)
    	{
    		if(y&1)re*=x;
    		x*=x;
    		y>>=1;
    	}
    	return re;
    }
    void Decomposition(int x,int flag)
    {
    	int i;
    	for(i=2;i*i<=x;i++)
    		while(x%i==0)
    			cnt[i]+=flag,x/=i;
    	if(x^1)
    		cnt[x]+=flag;
    }
    int main()
    {
    	int i,j;
    	cin>>n;
    	for(i=2;i<=n-2;i++)
    		Decomposition(i,1);
    	for(i=1;i<=n;i++)
    	{
    		scanf("%d",&d[i]);
    		if(!d[i]&&n!=1)
    		{
    			puts("0");
    			return 0;
    		}
    		sum+=d[i]-1;
    		for(j=2;j<=d[i]-1;j++)
    			Decomposition(j,-1);
    	}
    	if(sum!=n-2)
    	{
    		puts("0");
    		return 0;
    	}
    	for(i=1;i<=n-2;i++)
    		if(cnt[i])
    			ans*=Quick_Power(i,cnt[i]);
    	cout<<ans<<endl;
    }
    

    小结:prufer序列好像只有裸题诶.....

  • 相关阅读:
    DHCP服务器与DHCP中继服务器实验
    DAY1-作业
    logging模块的基本使用
    01_docker镜像命令
    00_docker的基本组成
    21_django配置使用mysql数据库的两种方式
    08_使用python操作mysql
    07_mysql的基本操作
    06_python操作mongodb
    05_MongoDB基本操作
  • 原文地址:https://www.cnblogs.com/ShuraK/p/10199285.html
Copyright © 2011-2022 走看看