【组合数学】【prufer数列】【HNOI 2004】【bzoj 1211】树的计数

Windows 10 本地开发环境:用 ShardingSphere-Proxy 5.4.1 快速搭建 MySQL 分库分表测试环境 本文详细介绍了在Windows 10系统中使用ShardingSphere-Proxy 5.4.1快速搭建MySQL分库分表测试环境的完整教程。从环境准备、MySQL配置到ShardingSphere-Proxy的核心设置,逐步指导开发者完成本地开发环境的搭建,并提供了分片策略详解和常见问题排查方法,帮助开发者高效验证分库分表功能。 阅读详情

1211: [HNOI2004]树的计数

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 1565  Solved: 512

Description

一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵。给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di的树的个数。

Input

第一行是一个正整数n,表示树有n个结点。第二行有n个数,第i个数表示di,即树的第i个结点的度数。其中1<=n<=150,输入数据保证满足条件的树不超过10^17个。

Output

输出满足条件的树有多少棵。

Sample Input

4                     
2 1 2 1

Sample Output

2

题解:

是明明的烦恼的弱化版。。做法大体相同,不用高精度真是开心。

Code:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 210
#define LL long long

int n,s,d[N],su[N],ys[N];
LL jc[30],ans;

int in(){
    int x=0; char ch=getchar();
    while (ch<'0' || ch>'9') ch=getchar();
    while (ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
    return x;
}

void init(){
    jc[0]=jc[1]=1;
    for (int i=2; i<=25; i++) jc[i]=jc[i-1]*(LL)i;

    for (int i=2; i<=N; i++){
        bool f=true;
        for (int j=2; j<=sqrt(i); j++)
            if (!(i%j)){
                f=false; break;
            }
        if (f) su[++su[0]]=i;
    }
}

void fenjie(int x,int y){
    for (int i=1; i<=su[0]; i++){
        if (x<=1) return;
        while (!(x%su[i]))
            ys[i]+=y,x/=su[i];
    }
}

int main(){
    scanf("%d",&n);
    if (n==1){
        int x=in();
        if (!x) ans=1;
        else ans=0;
        printf("%d\n",ans);
        return 0;
    }
    for (int i=1; i<=n; i++){
        d[i]=in();
        if (!d[i]){
            printf("0\n");
            return 0;
        }
        d[i]--,s+=d[i];
    }
    if (s!=n-2){
        printf("0\n");
        return 0;
    }

    init(); ans=1;
    if (n-2<=25) fenjie(jc[n-2],1);
    for (int i=1; i<=n; i++)
        fenjie(jc[d[i]],-1);
    for (int i=1; i<=su[0]; i++)
        while (ys[i]--) ans*=su[i];

    printf("%d\n",ans);
    return 0;
}
从苏宁电器到卡巴斯基(第二部)第14篇:我在卡巴的日子 XIV 目录 WannaCry 我的感慨 邻里矛盾 WannaCry 如果大家对于科技互联网圈子的新闻比较感兴趣的话,相信会对2017年5月的“WannaCry勒索病毒”事件记忆犹新,因为这个病毒在当时的全世界范围内掀起了极大的波澜,众多的企事业单位深受其害,造成的金钱和数据损失难以估量,从某种意义上来说,它甚至引领了勒索病毒新一轮的爆发浪潮。而通过这样的一次爆发,也让我对于卡巴斯基的技术实力有了更进一步的了解。 我记得很清楚,爆发的那天是周六,没记错的话Seth那天有事,就请假没来,只有我自己在公司值 阅读详情

相关推荐

全国各省份影像下载地址(11级别)

cesium中使用urltemplate加载,leaflet中使用tile加载,具体加载有问题可以给我留言。

资深三维GIS开发 5146

【BZOJ】1211 [HNOI2004]树的计数 prufer编码+组合数学+高精度

题目传送门 今天是一个%大佬的好日子,感觉大佬遍地走,只有我最弱…… 这题是一道非常难的题目,虽然是“【BZOJ】1005 [HNOI2008] 明明的烦恼”的简化版,但是仍然是一道非常难的数学题。(至少我是这么认为的) 首先,在做这题之前,我们需要了解prufer编码。大漩涡传送门,个人认为百度百科已经讲的很清楚了,就不在这里再做赘述了。 然后我们就要考虑如何把prufer编码转化成组合

Chester King 416

抖音直播行为规范考试

抖音直播行为规范考试

Q1642968641的博客 1万+

bzoj 1211

prufer序列: 参考链接:http://hzwer.com/3272.html 证明:一个序列必定对应着一棵合法的树 假设共有n个点,编号从1到n: 首先,n个点之间连了n-1条边; 其次,证,n个点之间不会出现环:假设环中最后添加进来的一条边是a,b,与a相连的另一个点是c,与b相连的另一个点是d,假设a是从x中选出来的,b是从y中选出来的,可知,a,c这条边中的...

178

施密特触发电路详细原理介绍

我们想获得矩形脉冲,有种方法是可以采用整形的方法获得矩形脉冲,但前提是可以找到频率和幅度都符合要求的电压信号。 我们设定矩形脉冲的几个指标。 施密特电路是脉冲波形变换中一种常采用的电路,主要有以下两个特点: 1.输入电平从低电平上升过程中电路状态转换为对应的输入电平,与高电平下降过程中对应的输入转换电平不同。 2.通过电路内部的正反馈使输出电压波形的边沿变得很陡。 施密特电路的结构和工作原理 我们先从模电的角度来分析此电路的工作原理。 此电路是通过公共发射极电阻耦合的两级正反馈放大器。 v1输入为低电平

fcxgfdjy的博客 1万+

【Fluent】太阳辐射模型—Solar Ray Tracing

一、引言Fluent提供了一个太阳能负载模型,可用于计算进入计算域的太阳光线的辐射效应。该模型可以分为:太阳光线追踪和太阳辐照。其中太阳辐照需要使用DO或MC模型,直接向辐射模型提供外光束方向和强度参数。太阳光线追踪不限制辐射模型,可以独立于辐射方程使用,甚至可以在辐射模型off的情况下使用。本文主要介绍太阳光线追踪模型。该模型非常适用于以下领域汽车气候控制 (ACC) 应用建筑物中的人体热舒适建模应用该模型使用着色算法进行太阳光线追踪。光线会透过半透明的面加载在照射面上。

a5567899的博客 7588

BZOJ1211树的计数

裸的prufer结论。 给个小链接prufer序列 ,里面有一个性质4就是本题答案,严谨证明可以上网找一找,如果从多组组合角度理解也可以。 剩下的就是特判,n==1时,du==0,1个,du!=0,废了。有du==0,废了。度数和大于(还是不等于来着?)2*(n-1),废了。拿到67分……。 接着就是求那个式子了,我有一套O(n)拆一个阶乘的理论。那这个就是O(n^2)了呗。 ...

weixin_30538029的博客 143

【RK3588开发记录】超详细的RK3588修改debug串口波特率为115200

修改RK3588的debug串口为115200

Crazydrams的博客 4805

BZOJ1211

1211: [HNOI2004]树的计数 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1154  Solved: 350 [Submit][Status] Description 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵。给定n,d1, d2

Dreamer_WishSky的专栏 619

PX4实战指南:通过遥控器通道直连实现舵机PWM控制

本文详细介绍了如何通过PX4飞控实现遥控器通道直连控制舵机PWM输出的完整流程。从硬件准备、遥控器配对到PX4参数配置和硬件连接,提供了实战技巧和常见问题解决方案,帮助无人机爱好者快速掌握舵机控制技术。重点讲解了AUX Passthrough模式设置和PWM参数调整等关键步骤。

weixin_29195217的博客 154

MediaPipe 从入门到精通:安装、配置与多场景应用实战手册

人体姿态检测是 MediaPipe 的核心功能之一,它能够从图像或视频中识别人体姿态,并输出关键点的坐标。这些关键点覆盖了身体的主要部位,例如肩膀、肘部、髋部、膝盖等,总计 33 个点。每个关键点包含 x、y、z 坐标(归一化到 0-1 范围)以及可见性评分,可用于分析动作、姿势或开发健身、游戏等应用。手部关键点检测是 MediaPipe 的另一大亮点,它可以识别图像或视频中的手部,并输出 21 个关键点的坐标。这些关键点覆盖手掌和手指的各个部位,适用于手势识别、虚拟现实或交互式应用。

m0_71589036的博客 389

树(组合数学,树的分割)

树 题意:给出一棵n个节点的树,k种颜料;给每个节点涂上颜色,合法涂色为:当两个节点颜色相同的时候,两节点路径上的节点都为该种颜色。问有多少种合法涂色(mod1e9+7mod 1e9+7mod1e9+7)。 思路:首先我们得从kkk种颜色中选iii种颜色用来涂色(AkiA_k^iAki​);对这棵树涂上iii种颜色的方法为从n−1n-1n−1条边中选出i−1i-1i−1条删除,得到iii个连通块,对每个连通块上色得到iii种颜色得方案数(Cn−1i−1C_{n-1}^{i-1}Cn−1i−1​); 解释一下

weixin_45363113的博客 953

基于STM32+华为云设计的智能鱼缸

本项目基于STM32单片机设计一款基于物联网的智能鱼缸系统,并通过应用侧接口开发上位机APP实现远程对鱼缸参数的检测和控制。该系统包括水温检测、水质检测、自动或手动换水、氛围灯灯光变换和自动或手动喂食等功能,可以帮助用户更好地管理鱼缸,提高鱼儿的生存率,同时增强用户对家庭装饰品的掌控感和科技感。

1万+

bzoj 1211 [HNOI2004]树的计数 prufer序列

题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1211 Description 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵。给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di的树的个数。 Input 第一行是一个正整数n,表示树有n...

Monster_ixx的博客 371

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

bzoj1211: [HNOI2004]树的计数

题目传送门 。。 解法: prufer数列。 有这么三个性质: 一个prufer数列与一个无根树一一对应。 一个n个节点的无根树的prufer数列长度为n-2。 一个点的度数等于他在prufer数列里面出现的次数+1。。 第三个性质这样证明: 首先需要了解prufer序列如何构造: 看这里 在prufer数列中,如果一个点出现了两次,那么肯定有两个点连向他。 那么还有一次呢

Hanks_o的博客 495

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[Prufer] BZOJ 1211 [HNOI2004]树的计数

每一棵树都对应着唯一的prufer数列,prufer数列也对应唯一的树。prufer数列构造方法:选取编号最小的叶子节点删掉,并将它的父亲加入到prufer数列中,直到树上还有两个节点。假设一个点入度为d,它最多有可能在prufer上出现(d-1)次(普通节点不可能因为父亲出现在prufer上,根节点由于prufer构造时要留两个点所以也会有一个儿子无法使它出现在prufer上),所以一共有n-2

雯舞 868

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

BZOJ 题目1211: [HNOI2004]树的计数(组合数学,prufer)

1211: [HNOI2004]树的计数 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1530  Solved: 502 [Submit][Status][Discuss] Description 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵。给

Jogging_Clown 734

【BZOJ 1211】 1211: [HNOI2004]树的计数 (prufer序列、计数)

   1211: [HNOI2004]树的计数 Time Limit:10 SecMemory Limit:162 MBSubmit:2468Solved:868 Description 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵。给定n,d1, d2, …, dn,编...

weixin_30571465的博客 123

BZOJ 1211: [HNOI2004]树的计数

二次联通门 :BZOJ 1211: [HNOI2004]树的计数 /* BZOJ 1211: [HNOI2004]树的计数 prufer数列 + Cayley公式 + 组合数学 其实就是明明的烦恼弱化版 (n-2)!/((d1 - 1)! * (d2 - 1)! * .... * (dn - 1)) 要...

weixin_30799995的博客 99

BZOJ 1211: [HNOI2004]树的计数 purfer序列

1211: [HNOI2004]树的计数 Description 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵。给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di的树的个数。 Input 第一行是一个正整数n,表示树有n个结点。第二行有n个数,第i个数表示di...

weixin_30679823的博客 133

BZOJ 1211 [HNOI2004] 树的计数

purfer数列

依然一笑作春温。 573

bzoj 1211: [HNOI2004]树的计数 prufer编码

题意一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵。给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di的树的个数。分析可以知道一组prufer编码唯一对应着一棵树,一棵树也唯一对应着一组prufer编码。 对于一棵给定所有节点度数的树,显然每个点会在prufer编码中出现d-1次,那么我们排列组合

beginend 670

bzoj 1211 prufer编码+排列组合

题意:n个点,允许任意两点之间连边,给定每个点的最终度数,求所有满足要求的树的个数 bzoj 1005的简化版,关于prufer序列及答案化简请戳(我才不说我是懒得写了呢...) var ans :int64; i,j :longint; n,sum :longint;

Eirlys的博客 514

【HNOI2004】树的计数

【HNOI2004】树的计数   这道题数据水的一匹我无话可说,谜之错误(数组赋值的时候一个下标写错了变量)居然只Wa了一组。   写这道题关键需要知道prufer序列以及cayley定理。   prufer数列,可以用来解一些关于无根树计数的问题。   prufer数列是一种无根树的编码表示,对于一棵n个节点带编号的无根树,对应唯一一串长度为n-1的prufer编码...

Destiny 416

[HNOI2004]树的计数(prufer编码+组合数学)

题目:一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵。给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di的树的个数。 思路:参考2008年国家集训队论文周梦宇《码之道——浅谈信息学竞赛中的编码与译码问题》 看完论文之后很容易知道这道题的答案即为(n-2)!/(d1-1)!(d2-1)!

To be excellent! 854

BZOJ 1211 HNOI2004 树的计数 Prufer序列

题目大意:给定一棵树中所有点的度数,求有多少种可能的树 Prufer序列,具体参考[HNOI2008]明明的烦恼 直接乘会爆long long,所以先把每个数分解质因数,把质因数的次数相加相减,然后再乘起来 注意此题无解需要输出0 当n!=1&&d[i]==0时 输出0 当Σ(d[i]-1)!=n-2时输出0 写代码各种脑残……居然直接算了n-2没用阶乘…… #include #in

世界 2792
上一篇: 【组合数学】【高精度】【prufer数列】【HNOI 2008】【bzoj 1005】明明的烦恼
下一篇: 【找规律(其实很神的东西)】【TJOI 2015】【bzoj 4001】概率论
morestep
博客等级 码龄12年 20粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值