给定一个具有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--凸多边形三角剖分相关推荐

  1. LeetCode 1039. 多边形三角剖分的最低得分(区间DP)

    文章目录 1. 题目 2. 解题 1. 题目 给定 N,想象一个凸 N 边多边形,其顶点按顺时针顺序依次标记为 A[0], A[i], ..., A[N-1]. 假设您将多边形剖分为 N-2 个三角形 ...

  2. AcWing1069.凸多边形的划分(区间DP)题解

    凸多边形的划分 题目传送门 题目描述 给定一个具有 N 个顶点的凸多边形,将顶点从 1 至 N 标号,每个顶点的权值都是一个正整数. 将这个凸多边形划分成 N−2 个互不相交的三角形,对于每个三角形, ...

  3. 凸多边形的划分——区间DP

    给定一个具有 N 个顶点的凸多边形,将顶点从 1 至 N 标号,每个顶点的权值都是一个正整数. 将这个凸多边形划分成 N−2 个互不相交的三角形,对于每个三角形,其三个顶点的权值相乘都可得到一个权值乘 ...

  4. 动态规划——区间dp

    在利用动态规划解决的一些实际问题当中,一类是基于区间上进行的,总的来说,这种区间dp是属于线性dp的一种.但是我们为了更好的分类,这里仍将其单独拿出进行分析讨论. 让我们结合一个题目开始对区间dp的探 ...

  5. 区间DP小结(附经典例题)

    写这篇文章的目的主要是想总结下区间DP的经典题目,同时给自己复习巩固这方面知识点. 区间DP 一.定义 ​ 区间DP是线性动态规划的扩展,适用场景为每段区间的最优解可以通过更小区间的最优解得到.所以我 ...

  6. 中石油训练赛 - sciorz画画(区间dp)

    题目描述 众所周知,sciorz会画画.某天,sciorz画了一个凸多边形,这个多边形的每个顶点都有一个权值a[i].sciorz觉得这个凸多边形不够美丽,于是他决定在n个点之间连线,最终用n-3条不 ...

  7. LeetCode 1130. 叶值的最小代价生成树(区间DP/单调栈贪心)

    文章目录 1. 题目 2. 解题 2.1 DP 2.2 单调栈贪心 1. 题目 给你一个正整数数组 arr,考虑所有满足以下条件的二叉树: 每个节点都有 0 个或是 2 个子节点. 数组 arr 中的 ...

  8. 区间dp入门——总结+习题+解析

    前天学长拉了个区间dp的专题,花了两个做,今天就来做个总结吧!!! 区间dp其实就是一种建立在线性结构上的对区间的动态规划,dp本来就是很奇妙的东西,也没有什么套路,就是一种思考的数学思维方式,只有做 ...

  9. 【DP_区间DP专辑】

    区间DP是一类在区间上进行动态规划的最优问题,一般是根据问题设出一个表示状态的dp,可以是二维的也可以是三维的,一般情况下为二维.然后将问题划分成两个子问题,也就是一段区间分成左右两个区间,然后将左右 ...

  10. [动态规划] 区间DP

    区间DP 石子合并问题 题目链接 https://www.acwing.com/problem/content/description/284/ 状态表示和状态转移 f [ i ] [ j ] f[i ...

最新文章

  1. JAVA中重写equals()方法的同时要重写hashcode()方法
  2. NumericUpDown
  3. 数据结构与算法笔记 - 绪论
  4. canvas基础-绘制矩形(1)
  5. svn不知道这样的主机 怎么解决_家里装修不知道怎么配置净水器,这几招教你轻松解决...
  6. jquery获取iframe里的js事件
  7. 【Qt教程】2.1 - Qt5 UI设计器、常用控件
  8. Thymeleaf前后端传值 页面取值与js取值
  9. LabVIEW升级图像识别功能
  10. Java 移位运算符的复合_Java移位运算符
  11. 【过程记录】ArcGIS Pro打开.osgb文件
  12. Python计算点到直线距离的两种方法
  13. Ubuntu系统上的ImageJ安装和卸载方法
  14. 制作游戏辅助/外挂违法吗?
  15. Navicat工具中数据库导入导出
  16. “全栈”工程师 请不要随意去做
  17. Leetcode典型题解答和分析、归纳和汇总——T51(N皇后)
  18. 【WebDriver】WebDriverWait 用法代码
  19. Excel表格自动化办公(持续更新)
  20. SegmentFault 技术周刊 Vol.4 - 这份 Android 有点甜

热门文章

  1. js 格式化 java时间格式化_用JavaScript(js)对时间格式化
  2. vue webapp滑动事件_js_监听移动端web触屏事件_滑动响应
  3. python 日期排序_python 日期排序
  4. 骑马与砍杀服务器修复,骑马与砍杀21.3.1公共版和热修说明 修复联机模式
  5. mysql转openldap_用mysql作openldap的后台数据库
  6. java远程执行jmi,java调用matlab 时出现java.lang.NullPointerException错误
  7. 设置cookie存活时间_Cookie的存活时间
  8. 神州八号利用计算机,说到科技,我想大部分的人想到的是神州八号
  9. 5点击换gif_新媒体人,至少要会做这种切换式GIF
  10. java 提交界面_使用javascript如何实现页面加载时自动提交表单