题意:询问n个点的每个非叶子点度数恰好等于d的不同构的无根树的数目。

n≤1000,d≤10n≤1000,d≤10。

题解:

这题真的是一道非常好的题

首先考虑有根树

定义f[i][j][k]表示i个点,根节点度数为j,最大子树大小为k

转移的时候枚举最大子树以及个数,这样保证了不重构

通过记录了根节点的度数我们就能很好的转移了

DP(n−ik,m−i,k−1)×C(DP(k,d−1,k−1)+i−1,i)

f[i+1][I][1]=1

f[1][0][0]=1

初值怎么赋呢

考虑无根的时候

由于一棵树重心只有1个或2个

且只有重心满足max子树<=n/2

所以利用这个性质我们可以让重心做根

另外一个性质是重心如果为2,那么他们就是相连的

所以我们可以计算(n/2,m-1,无限制)

然后k*(k-1)/2+k就是所求答案了

【CF724F】Uniformly Branched Trees的更多相关文章

  1. 【CF724F】Uniformly Branched Trees 动态规划

    [CF724F]Uniformly Branched Trees 题意:询问n个点的每个非叶子点度数恰好等于d的不同构的无根树的数目. $n\le 1000,d\le 10$. 题解:先考虑有根树的版 ...

  2. CF724F Uniformly Branched Trees

    CF724F Uniformly Branched Trees 有根树可以统计.无根树难以统计.因为可以换根. 所以不让换根:只要两个无根树在重心位置不同构,就一定不同构 每个本质不同的树在重心位置统 ...

  3. 【HDU1693】Eat the Trees(插头dp)

    [HDU1693]Eat the Trees(插头dp) 题面 HDU Vjudge 大概就是网格图上有些点不能走,现在要找到若干条不相交的哈密顿回路使得所有格子都恰好被走过一遍. 题解 这题的弱化版 ...

  4. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) F - Uniformly Branched Trees 无根树->有根树+dp

    F - Uniformly Branched Trees #include<bits/stdc++.h> #define LL long long #define fi first #de ...

  5. 【计算几何初步-凸包-Jarvis步进法。】【HDU1392】Surround the Trees

    [科普]什么是BestCoder?如何参加? Surround the Trees Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  6. 【二叉树】hdu 1622 Trees on the level

    [题意] 给定一棵树每个结点的权重和路径(路径用LR串表示),输出这棵树的层次遍历 [思路] 注意输入输出,sscanf用来格式化地截取需要的数据,strchr来在字符串中查找字符的位置 [Accep ...

  7. 【HDOJ】【1693】Eat The Trees

    插头DP 插头dp模板题…… 这题比CDQ论文上的例题还要简单……因为不用区分左右插头(这题可以多回路,并不是一条哈密尔顿路) 硬枚举当前位置的状态就好了>_< 题解:http://blo ...

  8. 【Leetcode_easy】872. Leaf-Similar Trees

    problem 872. Leaf-Similar Trees 参考 1. Leetcode_easy_872. Leaf-Similar Trees; 完

  9. 【leetcode】823. Binary Trees With Factors

    题目如下: Given an array of unique integers, each integer is strictly greater than 1. We make a binary t ...

随机推荐

  1. 使用thrift实现订阅服务和发布服务

    使用thrift实现订阅服务和发布服务 服务:订阅服务 market_subscriber 和 发布服务 market_publisher功能:market_subscriber 能够向 market ...

  2. git与eclipse集成之更新特性分支代码到个人特性分支

    1.1. 更新特性分支代码到个人特性分支 在基于特性分支开发的过程中,存在多人向特性分支提交代码的情况,开发者需要关注特性分支代码与个人分支代码保持同步,否则可能导致提交代码冲突. 具体代码同步步骤: ...

  3. bootstrap4简单使用和入门02-bootstrap的js组件简单使用

    自带默认的css和js弹框控制 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  4. centos中释放缓存的方法

    释放缓存区内存的方法 a)清理pagecache(页面缓存) # > /proc/sys/vm/drop_caches 或者 # sysctl - b)清理dentries(目录缓存)和inod ...

  5. struct/class等内存字节对齐问题详解

    问题引入 定义一个结构体的一般形式为: struct 结构体名 { //类型说明符 成员名; }; 例如有如下结构体: struct Stu { int id; char sex; float hig ...

  6. selenium之css定位小结

    前言 大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css ...

  7. Netty学习4—NIO服务端报错:远程主机强迫关闭了一个现有的连接

    1 发现问题 NIO编程中服务端会出现报错 Exception in thread "main" java.io.IOException: 远程主机强迫关闭了一个现有的连接. at ...

  8. bsdiff的编译与使用

    bsdiff是一个差异包比较工具,可以用来实现增量更新. 下载地址:http://www.daemonology.net/bsdiff 编译 Mac环境 版本:macOS 10.12 1.解压下载的b ...

  9. IOS 常遇到的报错警告 以及 解决办法

    1.  This application is modifying the autolayout engine from a background thread, which can lead to ...

  10. 查看MySQL版本的命令及常用命令

    Windows / Linux 系统 前提是已经正确安装了 MySQL,打开 Windows 系统中的命令行工具(Win + R --> 输入 cmd 并按下回车键)--> 输入命令: m ...