bzoj1211: [HNOI2004]树的计数 prufer序列裸题
2024-10-19 11:01:45
一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵。给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di的树的个数。
答案是(n-2)!/(a[1]-1)!/.../(a[n]-1)!,要特判一下不满足的情况和n==1的情况
/**************************************************************
Problem: 1211
User: walfy
Language: Java
Result: Accepted
Time:560 ms
Memory:17892 kb
****************************************************************/ import java.math.BigInteger;
import java.util.*; public class Main { public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
int[] a = new int [];
boolean ok = true;
int sum=;
for(int i=;i<n;i++)
{
a[i]=cin.nextInt();
if(a[i] == )ok=false;
sum += a[i];
}
if(n==)
{
if(a[]==)System.out.println();
else System.out.println();
return ;
}
if(ok == false||sum != *n-)
{
System.out.println();
return ;
}
BigInteger [] b = new BigInteger [];
b[] = BigInteger.ONE;
for(int i=;i<;i++)
{
b[i]=b[i-].multiply(BigInteger.valueOf(i));
}
BigInteger ans = b[n-];
for(int i=;i<n;i++)
{
ans=ans.divide(b[a[i]-]);
}
System.out.println(ans);
}
}
最新文章
- 【图像处理】【SEED-VPM】5.uImage的烧写 &; NFS烧写文件系统
- Qt多重继承时的信号与槽
- 我的Android第三章:Android的组件介绍
- java8 中的时间和数据的变化
- 10.Android之ProgressDialog进度对话框学习
- Struts2配置文件模板
- HDU 5151 Sit sit sit 区间dp
- 小小的封装了一个pie的echarts
- sql语句中like的使用
- WinDriver的一些
- ASP.NET 应用程序生命周期
- BFS和DFS详解
- YDKJS:作用域与闭包
- gulp+tp5配置
- wf 2017A
- ionic3/4 使用NavController 返回两层的方式
- Control group namespaces
- 【QT】error: &#39;SIGNAL&#39; was not declared in this scope
- 【转】C#中base关键字的几种用法
- Python 解析 XML 文件生成 HTML
热门文章
- instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例 , 返回true或者false
- MacBook鼠标指针乱窜/不受控制问题的解决方法
- ubuntu16.04下安装opencv-nonfree
- c# 读取confgi文件
- backend community-driven web framework
- 基于Nginx+FastDFS搭建图片文件系统
- Buy Tickets---poj2828(线段树)
- iptables综述
- uchome四大常用入口文件
- sql server 碎片整理——DBCC SHOWCONTIG