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

【算法日记】Day 11 动态规划专题——区间DP之基于范围中划分点的讨论

Abstract#动态规划#区间DP#多边形剖分

1. 题目

  • 题目:LeetCode 1039. 多边形三角剖分的最低得分
  • 核心思路:定义dp[i][j]表示从顶点i到顶点j构成的多边形(凸多边形,顶点按顺序排列)通过三角剖分能得到的最小得分。转移时,在(i, j)之间枚举一个中间顶点k,将多边形分为三部分:三角形(i, k, j)、子多边形(i, …, k)和(k, …, j)。得分为dp[i][k] + dp[k][j] + values[i] * values[j] * values[k]。取所有k的最小值。
  • 复杂度:时间复杂度O ( n 3 ) O(n³)O(n3),空间复杂度O ( n 2 ) O(n²)O(n2)

2. 代码

classSolution{public:intminScoreTriangulation(vector<int>&values){intn=values.size();vector<vector<int>>dp(n,vector<int>(n,0));// 初始化为0,边界自动为0// 区间长度从3开始(至少三个顶点才能剖分)for(intlen=3;len<=n;++len){for(intl=0;l+len-1<n;++l){intr=l+len-1;dp[l][r]=INT_MAX;for(intk=l+1;k<r;++k){dp[l][r]=min(dp[l][r],dp[l][k]+dp[k][r]+values[l]*values[r]*values[k]);}}}returndp[0][n-1];}};

3. 心得

  • 边界情况:当r - l < 2(即少于3个顶点)时,多边形无法剖分,得分为0。

  • 划分点的角色:顶点k必须位于l和r之间(l < k < r),它与l、r构成一个三角形(l, k, r)。这个三角形将原多边形分成三部分:

    • 三角形(l, k, r)的得分:values[l] * values[r] * values[k]
    • 左侧子多边形:顶点序列[l, l+1, ..., k],对应区间[l, k]
    • 右侧子多边形:顶点序列[k, k+1, ..., r],对应区间[k, r]
  • 为什么枚举k是充分的:任何合法的三角剖分,对于当前区间[l, r],边(l, r)一定是某个三角形的边(因为多边形是凸的,且l和r不相邻)。该三角形的第三个顶点就是某个k,因此枚举k即可覆盖所有剖分方式。

4. 相关题目

  • LeetCode 1547. 切棍子的最小成本
http://www.jsqmd.com/news/620566/

相关文章:

  • SenseVoice Small多语言识别教程:Auto模式下混合语种自动检测原理与调优
  • AI原生研发不是“加个插件”!2026年工具链选型的5个致命误区(92%团队已在第2步踩坑)
  • 二叉树后序遍历:从递归到非递归的优雅实现
  • 2026届必备的降AI率平台推荐榜单
  • 比Scanpy更好看!用Omicverse玩转单细胞UMAP高级可视化技巧
  • 手把手教你搞定深信服aES升级包下载与导入(附PKG文件操作截图)
  • OC Extension TextView
  • 鸿蒙 PC 的机会在哪里?
  • 【2024最严合规迁移标准】:金融级遗留系统AI重构必须满足的11项审计红线(附自查表PDF)
  • AI Agent 跑完任务怎么通知你?我写了个微信推送服务闭
  • FanControl深度解析:从硬件控制原理到高级风扇管理实战指南
  • 零成本!Ollama本地部署国产大模型全指南(支持Kimi-K2.5/GLM-5/Qwen,新手秒上手)
  • 如何用CuteTranslation解决Linux屏幕翻译难题:完整技术指南
  • VirtualLab Fusion界面导航:从菜单栏到工具箱的全面解析
  • Golang切片append怎么用_Golang切片扩容机制教程【推荐】
  • ShutUp10++ vs 其他隐私工具:实测对比哪款更适合你的Windows系统优化需求
  • 深入rust-cross:理解Rust跨编译的术语与架构原理完整指南
  • 物联网浏览器(IoTBrowser)-js开发人脸识别部
  • 2026届毕业生推荐的六大AI写作方案推荐
  • akbdjehjdjdbfjdnf
  • Leather Dress Collection惊艳效果:Leather_TankTop_Pants皮背心+工装短裤街头风作品
  • 三大技术突破:重新定义Android设备标识的完整解决方案
  • RK3588平台RKNN-Toolkit2模型量化与性能优化实战指南
  • 如何用图形界面轻松下载M3U8视频:N_m3u8DL-CLI-SimpleG完全指南
  • [S32K3实战指南] 一站式搞定NXP S32K3开发环境:从RTD集成到IDE配置
  • 告别华而不实:H3C TX1801 Plus刷OpenWRT后,IPv6和插件功能实测
  • 如何利用SQL查询快速统计分类数据_配合GROUP BY使用
  • OC Control PPNumberButton
  • 构建具备批判性思维的AI Agent
  • 保姆级教程:为阿里SenseVoice模型添加字幕时间轴(Python+FunASR)