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

南宁网站建设 超薄网络查看网站的收录量可以用哪个查询命令

南宁网站建设 超薄网络,查看网站的收录量可以用哪个查询命令,重庆制作企业网站,2020长沙马拉松线上赛前言: 在上一篇中,我们讲解了动态规划基础及线性、区间 DP 典型案例。本篇将聚焦 背包问题、树形 DP、状态压缩 DP 以及更高级的 DP 技巧,如插值 DP、数位 DP 和树链剖分DP。通过这些内容,你将全面提升动态规划问题的建模与求解能…

前言:

        在上一篇中,我们讲解了动态规划基础及线性、区间 DP 典型案例。本篇将聚焦 背包问题树形 DP状态压缩 DP 以及更高级的 DP 技巧,如插值 DP、数位 DP 和树链剖分+DP。通过这些内容,你将全面提升动态规划问题的建模与求解能力。


一、背包问题

        背包问题是动态规划最经典的应用场景之一,包含若干变种:

1. 0/1 背包

1.1 问题定义

        给定 N 件物品,每件物品体积 vol[i]、价值 val[i],以及一个容量为 V 的背包。每件物品只能选择 0 次或 1 次,求最大总价值。

1.2 状态定义与转移
  • 定义 dp[i][j] 为前 i 件物品、背包容量为 j 时的最大价值。

  • 转移:

    dp[i][j] = max(dp[i-1][j], dp[i-1][j-vol[i]] + val[i])
    
  • 边界:dp[0][*] = 0, dp[*][0] = 0

1.3 自底向上实现(二维)
int[][] dp = new int[N+1][V+1];
for (int i = 1; i <= N; i++) {for (int j = 0; j <= V; j++) {dp[i][j] = dp[i-1][j];if (j >= vol[i])dp[i][j] = Math.max(dp[i][j], dp[i-1][j-vol[i]] + val[i]);}
}
return dp[N][V];
1.4 一维滚动数组优化
  • 注意倒序遍历容量,防止重复使用同一物品:

int[] dp = new int[V+1];
for (int i = 1; i <= N; i++) {for (int j = V; j >= vol[i]; j--) {dp[j] = Math.max(dp[j], dp[j-vol[i]] + val[i]);}
}
return dp[V];

2. 完全背包

2.1 定义

        每种物品可以无限次选取。

2.2 转移
  • 正序遍历容量:

for (int i = 1; i <= N; i++)for (int j = vol[i]; j <= V; j++)dp[j] = Math.max(dp[j], dp[j-vol[i]] + val[i]);

3. 多重背包

3.1 定义

每种物品有 cnt[i] 件可选。

3.2 转换策略
  • 直接枚举:O(NVcnt)

  • 二进制拆分优化:将 cnt[i] 分解为若干二进制块,转化为多个 0/1 物品,复杂度 O(NVlog cnt)

int k = 1;
while (k < cnt[i]) {addItem(vol[i]*k, val[i]*k);cnt[i] -= k;k <<= 1;
}
addItem(vol[i]*cnt[i], val[i]*cnt[i]);

4. 背包问题的变种

  • 分组背包:物品分组,每组只能选 0/1 件。

  • 混合背包:部分物品 0/1,部分完全,多重共存。

通用做法:对不同类型物品分别使用不同遍历顺序。


二、树形 DP 与状态压缩

1. 树形 DP

1.1 问题场景
  • 路径最大和:树中两节点路径权重最大。

  • 树的直径:树上最长路径。

  • 最小覆盖集(Vertex Cover):选顶点使每条边至少有一个端点被选中。

1.2 树形 DP 通用思路
  • 以根为起点,对树进行 DFS,将子树结果向上传递。

  • 状态 dp[u][0/1] 表示节点 u 未选/已选的最优解。

void dfs(int u, int parent) {dp[u][0] = 0;dp[u][1] = value[u];for (int v : children[u]) if (v != parent) {dfs(v, u);dp[u][0] += dp[v][1];  // u 不选,v 必选dp[u][1] += Math.min(dp[v][0], dp[v][1]);}
}

2. 状态压缩 DP

适用于 n ≤ 20 的子集枚举场景,如旅行商、集合划分。

2.1 旅行商 (TSP)
  • dp[mask][i] 表示经过子集 mask,终点为 i 的最短路径。

  • 转移:

for mask, i: dp[mask][i] = min(dp[mask ^ (1<<i)][j] + dist[j][i])

时间 O(n^22^n),空间 O(n2^n)。

2.2 集合划分 / 多人配送

同理使用 mask 表示已覆盖元素/客户。


三、高级 DP 话题

1. 插值 DP

  • 场景:插花、矩形切割。动态枚举插入或切割点。

  • 转移类似区间 DP。

2. 数位 DP

  • 场景:统计满足条件的整数个数。

  • 思路:按高位逐步枚举,对前缀状态进行 DP。

3. 树链剖分 + DP

  • 思路:将树分解为链段,对路径或区间 DP 使用线段树/前缀和优化。


四、本篇小结

  • 背包系列:0/1、完全、多重及其优化方法;分组、混合背包可灵活组合。

  • 树形 DP:将树问题映射为子树状态转移,处理路径或覆盖类型问题。

  • 状态压缩 DP:子集枚举是 NP-hard 问题的近似或小规模精确解法。

  • 高级技巧:插值 DP、数位 DP 和树链剖分+DP 扩展了 DP 的应用边界。

        动态规划是算法竞赛和工程优化的利器,多练习、多归纳,才能驾驭其强大威力。

http://www.yayakq.cn/news/434020/

相关文章:

  • 网站建设工具哪个好西安专业网站制作服务
  • 新买的服务器怎么做网站免费ppt模板下载完整版免费
  • 做同城服务网站比较成功的网站北京网站平台建设
  • 企业网站建设主要类型及选择资产管理公司网站建设方案
  • 自己做网站能否赚钱6网站平台推广语录
  • 企业做网站注意事项响应式网站开发pdf
  • 濮阳自适应网站建设网络网站制作
  • 网站搭建需要什么技术目前最流行网站开发软件
  • 公众号网站怎么做网站制作类软件推荐
  • 乔拓云建站平台企业网站的形式有哪些
  • 网站内容的排版布局网站建设推介
  • 网新企业网站管理系统 破解企业公司有哪些
  • 永济市做网站北京网站制作合肥
  • 怎么做网站发货wordpress 分类顺序
  • 多语言版本的网站九江浔阳网站建设
  • 网站源码下载教程长沙网建站
  • 自己的域名怎么做网站全网vip影视网站一键搭建
  • 企业网站建设代理在百度搜索到自己的网站
  • 做网站从哪里找货源大连seo
  • 属于网站seo分析什么软件个人电脑搭建游戏服务器
  • 网站建设kpi考核苏州市建设工程质量监督站网站
  • 在线制作视频的网站盐田做网站
  • 外贸网站建设收益移动网站与pc网站
  • 公园网站建设方案 ppt模板山西营销型网站建设
  • 织梦 公司网站模板注册网站诚信承诺书
  • 服务网站建设推广wordpress输出友情链接
  • 宝安建网站公司建设网站用什么好
  • 企业网站建设中企动力做问卷美观的网站
  • 溧阳手机网站设计母婴网站源码dede
  • 吕梁营销型网站建设费用水泵行业网站哪个做的好