区间DP--凸多边形三角剖分
给定一个具有N(N<50)个顶点(从1到N编号)的凸多边形,每个顶点的权均已知。问如何把这个凸多边形划分成N-2个互不相交的三角形,使得这些三角形顶点的权的乘积之和最小?
输入文件:第一行 顶点数N
第二行 N个顶点(从1到N)的权值
输出格式:最小的和的值
样例:5
1 2 3 4 5
输出:38
1 /*没找到交的OJ网站,就自己造了几组数据试了一下 2 区间型DP的转移方程:一般涉及区间的起点和延伸的长度 3 f[i][j]表示从i开始j长度的区间分割三角形的最小乘积和,把端点i,i+j-1可以与区间内任意一个不与i,i+j-1相邻的点组成三角形,所以枚举中间点k即可*/ 4 #include<iostream> 5 using namespace std; 6 #include<cstdio> 7 #include<cstring> 8 #define N 120 9 #define MAX (1<<31)-1 10 long long a[N]; 11 long long f[N][N]; 12 int n; 13 int main() 14 { 15 scanf("%d",&n); 16 for(int i=1;i<=n;++i) 17 { 18 scanf("%d",&a[i]); 19 a[i+n]=a[i];/*把这条多边形变成两倍的链条*/ 20 } 21 memset(f,127,sizeof(f)); 22 for(int i=1;i<=2*n-2;++i) 23 f[i][3]=a[i]*a[i+1]*a[i+2];/*初始化*/ 24 for(int j=4;j<=n;++j) 25 for(int i=1;i+j<=2*n+1;++i) 26 for(int k=i+2;i+j-k>=3;++k)/*枚举k*/ 27 f[i][j]=min(f[i][j],f[i][k-i+1]+f[k][i+j-k]+a[i]*a[k]*a[i+j-1]); 28 long long ans=MAX; 29 for(int i=1;i<=n;++i)/*注意最后把所有点作为区间端点长度为n的情况都枚举,找出最小值*/ 30 ans=min(ans,f[i][n]); 31 cout<<ans<<endl; 32 return 0; 33 }
转载于:https://www.cnblogs.com/c1299401227/p/5490268.html
区间DP--凸多边形三角剖分相关推荐
- LeetCode 1039. 多边形三角剖分的最低得分(区间DP)
文章目录 1. 题目 2. 解题 1. 题目 给定 N,想象一个凸 N 边多边形,其顶点按顺时针顺序依次标记为 A[0], A[i], ..., A[N-1]. 假设您将多边形剖分为 N-2 个三角形 ...
- AcWing1069.凸多边形的划分(区间DP)题解
凸多边形的划分 题目传送门 题目描述 给定一个具有 N 个顶点的凸多边形,将顶点从 1 至 N 标号,每个顶点的权值都是一个正整数. 将这个凸多边形划分成 N−2 个互不相交的三角形,对于每个三角形, ...
- 凸多边形的划分——区间DP
给定一个具有 N 个顶点的凸多边形,将顶点从 1 至 N 标号,每个顶点的权值都是一个正整数. 将这个凸多边形划分成 N−2 个互不相交的三角形,对于每个三角形,其三个顶点的权值相乘都可得到一个权值乘 ...
- 动态规划——区间dp
在利用动态规划解决的一些实际问题当中,一类是基于区间上进行的,总的来说,这种区间dp是属于线性dp的一种.但是我们为了更好的分类,这里仍将其单独拿出进行分析讨论. 让我们结合一个题目开始对区间dp的探 ...
- 区间DP小结(附经典例题)
写这篇文章的目的主要是想总结下区间DP的经典题目,同时给自己复习巩固这方面知识点. 区间DP 一.定义 区间DP是线性动态规划的扩展,适用场景为每段区间的最优解可以通过更小区间的最优解得到.所以我 ...
- 中石油训练赛 - sciorz画画(区间dp)
题目描述 众所周知,sciorz会画画.某天,sciorz画了一个凸多边形,这个多边形的每个顶点都有一个权值a[i].sciorz觉得这个凸多边形不够美丽,于是他决定在n个点之间连线,最终用n-3条不 ...
- LeetCode 1130. 叶值的最小代价生成树(区间DP/单调栈贪心)
文章目录 1. 题目 2. 解题 2.1 DP 2.2 单调栈贪心 1. 题目 给你一个正整数数组 arr,考虑所有满足以下条件的二叉树: 每个节点都有 0 个或是 2 个子节点. 数组 arr 中的 ...
- 区间dp入门——总结+习题+解析
前天学长拉了个区间dp的专题,花了两个做,今天就来做个总结吧!!! 区间dp其实就是一种建立在线性结构上的对区间的动态规划,dp本来就是很奇妙的东西,也没有什么套路,就是一种思考的数学思维方式,只有做 ...
- 【DP_区间DP专辑】
区间DP是一类在区间上进行动态规划的最优问题,一般是根据问题设出一个表示状态的dp,可以是二维的也可以是三维的,一般情况下为二维.然后将问题划分成两个子问题,也就是一段区间分成左右两个区间,然后将左右 ...
- [动态规划] 区间DP
区间DP 石子合并问题 题目链接 https://www.acwing.com/problem/content/description/284/ 状态表示和状态转移 f [ i ] [ j ] f[i ...
最新文章
- JAVA中重写equals()方法的同时要重写hashcode()方法
- NumericUpDown
- 数据结构与算法笔记 - 绪论
- canvas基础-绘制矩形(1)
- svn不知道这样的主机 怎么解决_家里装修不知道怎么配置净水器,这几招教你轻松解决...
- jquery获取iframe里的js事件
- 【Qt教程】2.1 - Qt5 UI设计器、常用控件
- Thymeleaf前后端传值 页面取值与js取值
- LabVIEW升级图像识别功能
- Java 移位运算符的复合_Java移位运算符
- 【过程记录】ArcGIS Pro打开.osgb文件
- Python计算点到直线距离的两种方法
- Ubuntu系统上的ImageJ安装和卸载方法
- 制作游戏辅助/外挂违法吗?
- Navicat工具中数据库导入导出
- “全栈”工程师 请不要随意去做
- Leetcode典型题解答和分析、归纳和汇总——T51(N皇后)
- 【WebDriver】WebDriverWait 用法代码
- Excel表格自动化办公(持续更新)
- SegmentFault 技术周刊 Vol.4 - 这份 Android 有点甜
热门文章
- js 格式化 java时间格式化_用JavaScript(js)对时间格式化
- vue webapp滑动事件_js_监听移动端web触屏事件_滑动响应
- python 日期排序_python 日期排序
- 骑马与砍杀服务器修复,骑马与砍杀21.3.1公共版和热修说明 修复联机模式
- mysql转openldap_用mysql作openldap的后台数据库
- java远程执行jmi,java调用matlab 时出现java.lang.NullPointerException错误
- 设置cookie存活时间_Cookie的存活时间
- 神州八号利用计算机,说到科技,我想大部分的人想到的是神州八号
- 5点击换gif_新媒体人,至少要会做这种切换式GIF
- java 提交界面_使用javascript如何实现页面加载时自动提交表单