当前位置: 首页 > news >正文

广西网站建设贵吗购物网站建设市场

广西网站建设贵吗,购物网站建设市场,南和邢台网站制作,云南官网优化文章目录 树形DP讲解一、引言二、树形DP基础1、树的定义2、树形DP的基本思想3、代码示例#xff1a;子树大小 三、经典例题解析1、树的平衡点1.1、代码示例 2、没有上司的舞会#xff08;树的最大独立集#xff09;2.1、代码示例 四、总结 树形DP讲解 一、引言 树形动态规… 文章目录 树形DP讲解一、引言二、树形DP基础1、树的定义2、树形DP的基本思想3、代码示例子树大小 三、经典例题解析1、树的平衡点1.1、代码示例 2、没有上司的舞会树的最大独立集2.1、代码示例 四、总结 树形DP讲解 一、引言 树形动态规划Tree DP是动态规划中的一种特殊形式它专门用于解决与树结构相关的问题。树形DP的核心思想是利用树的分形结构递归地定义和解决问题。在这篇文章中我们将深入探讨树形DP的基本概念、经典例题以及实际应用。 二、树形DP基础 1、树的定义 在图论中树被定义为一个连通且无圈的图。树的分形结构意味着树的每个子树也是一棵完整的树这使得树形DP天然适合递归求解。 2、树形DP的基本思想 树形DP通常遵循“先子树后合并”的原则这与树的后序遍历相似。我们先递归访问所有子树然后在根节点上合并结果。 3、代码示例子树大小 void dfs(int u) {if (u 是叶子) {f[u] 1;return;}for (int v : e[u]) {dfs(v);f[u] f[v];}f[u] 1; // 本身 }这段代码通过深度优先搜索DFS计算以每个节点为根的子树大小。 三、经典例题解析 1、树的平衡点 平衡点是指删除树中的某个节点后使得剩下的连通块中最大的连通块大小最小。我们可以通过计算每个节点的子树大小来找到平衡点。 1.1、代码示例 import java.util.ArrayList; import java.util.List;public class Main {static final int N 100010; // 假设N是图的最大节点数static ListInteger[] e new ArrayList[N];static int ans, idx, f[] new int[N];public static void main(String[] args) {// 初始化邻接表for (int i 0; i N; i) {e[i] new ArrayList();}// 示例调用int root 1; // 假设1是树的根节点int fa 0; // 根节点没有父节点dfs(root, fa);System.out.println(最大值: ans , 节点: idx);}static void dfs(int u, int fa) {f[u] 1;int mx 0;for (int v : e[u]) {if (v fa) continue;dfs(v, u);f[u] f[v];mx Math.max(mx, f[v]);}mx Math.max(mx, n - f[u]);if (ans mx) {ans mx;idx u;}}// 假设n是节点总数static int n 10; // 这里需要根据实际情况设置 }2、没有上司的舞会树的最大独立集 在这个问题中我们需要找到树的最大权值独立集即没有直接上司和下属关系的节点集合。 2.1、代码示例 import java.util.ArrayList; import java.util.Scanner;public class Main {static final int N 10000 10;static ArrayListInteger[] tr new ArrayList[N];static int[][] f new int[N][2];static int[] v new int[N];static int[] Happy new int[N];static int n;public static void main(String[] args) {Scanner scanner new Scanner(System.in);// 初始化邻接表for (int i 0; i N; i) {tr[i] new ArrayList();}n scanner.nextInt();for (int i 1; i n; i) {Happy[i] scanner.nextInt();}for (int i 1; i n; i) {int x scanner.nextInt();int y scanner.nextInt();tr[y].add(x);}int root 0;for (int i 1; i n; i) {if (v[i] 0) {root i;break;}}dfs(root);System.out.println(Math.max(f[root][0], f[root][1]));}static void dfs(int u) {f[u][0] 0;f[u][1] Happy[u];for (int v : tr[u]) {dfs(v);f[u][0] Math.max(f[v][0], f[v][1]);f[u][1] f[v][0];}} }四、总结 树形DP是一种强大的算法工具它通过利用树的结构特性来解决复杂的优化问题。通过本文的介绍和代码示例我们可以看到树形DP在解决树相关问题时的效率和优雅。掌握树形DP不仅能够提升算法设计能力还能在实际问题中找到创新的解决方案。 版权声明本博客内容为原创转载请保留原文链接及作者信息。 参考文章 【动态规划】树形DP完全详解 - RioTian - 博客园
http://www.w-s-a.com/news/692673/

相关文章:

  • 建设公司网站大概需要多少钱建站平台和网站开发的区别
  • 淄川区住房和城乡建设局网站门户网站模板源码下载
  • 室内设计公司 网站建设建站塔山双喜
  • 网站建设属于什么经营范围销售网站开发业务
  • 企业建站系统平台优秀网站作品截图
  • 杭州品牌网站制作wordpress多域名移动主题
  • 北京网站网站建设icp备案 网站备案
  • 长春网站公司哪家好电子商务网站建设作文
  • 网站开发php程序员网上店铺怎么运营
  • mip网站怎么做匹配h5婚纱摄影网站模板
  • 怎么注册建设公司网站域名历史价格查询
  • 爱站网seo工具包互联网软件开发工程师
  • 百度站长工具平台登录郑州seo规则
  • 财税公司做网站精品建站教程
  • 建设区块链网站区块链开发平台有哪些
  • 青年人爱看的网站ie显示wordpress网页不完整
  • 优惠券推广网站怎么做青岛正规网站建设哪家便宜
  • 怎么搞一个服务器建设网站wordpress页眉编辑
  • 计算机企业网站建设论文流量平台是什么意思
  • 成都建设网站公司哪家好上海有名的广告公司
  • 收录优美图片找不到了整站seo优化一般多少钱
  • 大型网站建设哪家好汉川网页设计
  • 深圳品牌策划公司推荐南昌网站怎么做seo
  • 滨州做微商城网站备案时暂时关闭网站
  • 手机网站样式代码网站是怎样制作的
  • 任务发布网站建设苏州园区房价
  • 网站的认识知识付费做的最好的平台
  • 企业电子商务网站设计的原则深圳的网站建设公司怎么样
  • 个人网站趋向wordpress图片搬家
  • 做空压机网站的公司有哪些wordpress 外部链接