力扣每日一题 ---- 1039. 多边形三角剖分的最低得分

这题的难点在哪部分呢,其实是怎么思考。这道题如果之前没做过类似的话,还是很难看出一些性质的,这题原本的话是没有图片把用例显示的这么详细的。这题中有个很隐晦的点没有说出来

剖出来的三角形是否有交叉,这题中如果加一个三角形之间没有任何交集除了边,会更好理解一点。然后我们就是这么去知道该怎么剖三角形,知道该怎么剖三角形之后。我们再来考虑这是道什么题目,爆搜三角形的乘积的话,我们是n^3,爆搜四边形的乘积的话是这个就不好说了,因为四边形也是由多个是三角形组成的,五边形六边形等等同理

本题中,我们要求的是多边形中能切出的三角形的乘积,我们现在爆搜只是知道多边形中每个三边型的乘积最小值(因为是三角形所以最小值是确定的),并不知道多边形的乘积最小是多少,那么我们三角形其实也算是多边形,但是在本题中他是特殊的三角多边形,而我现在的情况是要求出四边形,五边形,六边型......的乘积最小值,那么知道了这个情况之后,我们再去思考下一步,就是确认是否有递推性质,四边形的最小值是由多个组合的三边形的和中的最小值决定的,那五边形呢?那五边形是不是可以划分为一个四边形和一个三边形,六边形是不是可以划分为一个一个五边形和四边形,我们发现了一个性质,我们可以从三边形的最小值递推到n边形,那么我们就知道了这题目具有递推性质,具有递推性质我们可以用记忆化搜索和动态规划来解决。

前面这些我们是知道整体思路是什么,是本题具有递推性质。那么现在我们就可以根据递推性质来找解决办法了。

那么知道了解决办法后,还有一个难点就是,怎么算这些多边形的乘积。

那么我们现在只知道每一个三角形的乘积,这个三角形的乘积我们是已知的,然后多枚举几个发现一个性质,每个三角形都能把多边形分成三部分,发现三角形可以将整体分成三部分,再继续发现一个性质,不管你以那个三角形分成左右两边,有几个三角形的一条边一定是固定的,也就是外边,那么只要我们枚举外边的任意一个边的所有三角形就可以知道所有组成多边形的三角形最小值了。

知道了怎么算多边形,那么我们现在就是可以确定用什么方法了。动态规划和记忆化搜索都行

先来个记忆化搜索

i < k < j

class Solution {
public:int f[110][110];int minScoreTriangulation(vector<int>& values) {memset(f,0x3f3f3f3f,sizeof(f));function<int(int, int)> dfs = [&](int i,int j)->int{if(abs(i - j) <= 1){return 0;}if(f[i][j] != 0x3f3f3f3f) return f[i][j];for(int k = i + 1;k < j;k++){f[i][j] = min(f[i][j],dfs(i,k) + dfs(k,j) + values[i]*values[j]*values[k]);}return f[i][j];};dfs(0,values.size() - 1);return f[0][values.size() - 1];}
};

动态规划:

动态规划部分的话,我们其实在计算的时候,我们的四边形依赖于三边形,五边形依赖于四边形和三边形,六边形同理等等,那么我们就可以根据长度为阶段,然后后面的部分就是固定左和右端点,然后枚举k就行,i < k < j

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 70;int n;
int a[N];
__int128 f[N][N];
ostream &operator << (ostream &out,__int128 x) {if (!x) {out << 0;return out;}int stk[110],top = 0;while (x) stk[++top] = x % 10,x /= 10;for (int i = top;i >= 1;i--) out << stk[i];return out;
}
int main()
{cin>>n;for(int i = 1;i <= n;i++){cin>>a[i];}//memset(f,0x3f,sizeof f);for(int len = 1;len <= n;len++){for(int l = 1,r;r = l + len - 1,r <= n;l++){if(len < 3) f[l][r] = 0;else{f[l][r] = 1e29;for(int k = l + 1;k < r;k++){f[l][r] = min(f[l][r],f[l][k] + f[k][r] + (__int128)a[l] * a[k] * a[r]);}}}}cout<<f[1][n]<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/650359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络防御——NET实验

一、实验拓扑 二、实验要求 1、生产区在工作时间&#xff08;9&#xff1a;00---18&#xff1a;00&#xff09;内可以访问服务区&#xff0c;仅可以访问http服务器&#xff1b; 2、办公区全天可以访问服务器区&#xff0c;其中&#xff0c;10.0.2.20可以访问FTP服务器和HTTP服…

水文模型SWMM与LisFlood耦合(pdf文档、软件见资源)

总技术路线图 INP生成图解 文献&#xff1a;面向服务的Web-SWMM构建研究 regardingINP为ArcGIS Pro项目 1.SWMM模型数据准备与参数设置 1.子汇水区 文件位于&#xff1a;beforeGenerateINP/generateSub.py&#xff08;一级划分&#xff09; 问题&#xff1a; 水文分析阈值划…

命令行安装vant2项目

声明&#xff1a;原文参考链接出自&#xff1a;ERROR in ./node_modules/vant export ‘createVNode‘ (imported as ‘_createVNode‘) was not found in ‘vue_error in node_modules/vant/lib/overlay/overlay.d.t-CSDN博客 已经安装Vant,但是引用Vant里面组件库时候报错&a…

C++ 关于“常量”的知识整理:

目录 1 常量对象&#xff1a; 2 常量成员&#xff1a; 2.1常量数据成员&#xff1a; 常数据成员总结&#xff1a; 2.2常量成员函数&#xff08;使用最多&#xff09;&#xff1a; 常成员函数总结&#xff1a; 3 常量引用&#xff1a; C中常量的值在程序运行中不允许被改…

调用阿里通义千问大语言模型API-小白新手教程-python

阿里大语言模型通义千问API使用新手教程 最近需要用到大模型&#xff0c;了解到目前国产大模型中&#xff0c;阿里的通义千问有比较详细的SDK文档可进行二次开发,目前通义千问的API文档其实是可以进行精简然后学习的,也就是说&#xff0c;是可以通过简单的API调用在自己网页或…

Redis为什么速度快:数据结构、存储及IO网络原理总结

Redis&#xff0c;作为内存数据结构存储的佼佼者&#xff0c;其高性能表现一直备受赞誉。那么&#xff0c;Redis究竟是如何实现这一点的呢&#xff1f;接下来&#xff0c;我们将更深入地探讨其背后的关键技术&#xff0c;并提供进一步的优化策略。 一、内存存储与数据结构设计…

【开源】基于JAVA语言的实验室耗材管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 耗材档案模块2.2 耗材入库模块2.3 耗材出库模块2.4 耗材申请模块2.5 耗材审核模块 三、系统展示四、核心代码4.1 查询耗材品类4.2 查询资产出库清单4.3 资产出库4.4 查询入库单4.5 资产入库 五、免责说明 一、摘要 1.1…

【现代控制系统】从状态方程导出微分方程

从状态方程导出微分方程 2023年6月20日 1. 基本方法 状态空间表达式&#xff1a; x ˙ ( t ) A x ( t ) B u ( t ) y ( t ) C x ( t ) D u ( t ) \begin{aligned} &\dot{ x}(t){ A }{ x }(t){ B }{ u } (t) \\ &{ y }(t){ C } { x }(t){ D } { u }(t) \end{alig…

基于Javaweb开发的二手图书零售系统详细设计【附源码】

基于Javaweb开发的二手图书零售系统详细设计【附源码】 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统…

java的==运算符和equals详解

①chatgpt的解释 在Java中&#xff0c;和equals都是用于比较两个对象的操作符&#xff0c;但它们的行为和用途有所不同。 操作符&#xff1a; 对于基本数据类型&#xff0c;比较的是它们的值是否相等。例如&#xff0c;int a 5; int b 5; System.out.println(a b); // 输出t…

内网穿透natapp使用教程(Linux)

我的使用场景&#xff1a;在家访问学校服务器&#xff0c;由于不在一个局域网&#xff0c;所以需要使用内网穿透&#xff0c;我使用的是natapp。需要在有局域网的时候做好以下步骤。 &#xff08;natapp官网&#xff1a;https://natapp.cn/&#xff09; 1. 下载客户端 &#x…

springboot入门2

学习目标&#xff1a; 了解数据库配置加密方法&#xff0c;数据库连接池&#xff0c;mybatis-paginationInterceptor分页&#xff0c;pagehelper分页常用功能 学习内容&#xff1a; 1、mybatis plus配置加密 1.1、生成加密配置 package sccba.example;import com.baomidou…

盲盒App小程序开发:引领未来购物新潮流

随着科技的不断发展&#xff0c;我们的购物方式也在不断改变。近年来&#xff0c;盲盒购物逐渐成为了一种新型的消费模式&#xff0c;受到了广大消费者的热烈欢迎。为了满足消费者的需求&#xff0c;越来越多的企业开始涉足盲盒App的开发。本文将探讨盲盒App开发的意义、前景以…

[嵌入式软件][启蒙篇][仿真平台] STM32F103实现IIC控制OLED屏幕

上一篇&#xff1a;[嵌入式软件][启蒙篇][仿真平台] STM32F103实现LED、按键 [嵌入式软件][启蒙篇][仿真平台] STM32F103实现串口输出输入、ADC采集 [嵌入式软件][启蒙篇][仿真平台]STM32F103实现定时器 [嵌入式软件][启蒙篇][仿真平台] STM32F103实现IIC控制OLED屏幕 文章目…

【GitHub项目推荐--国外名校AI教程】【转载】

这个开源项目搜集了 YouTube 上优质的机器学习教程&#xff0c;方向包括机器学习、深度学习、计算机视觉、自然语言处理、无监督学习等等。 开源地址&#xff1a;https://github.com/dair-ai/ML-YouTube-Courses

[260. 只出现一次的数字 III](C语言题解)(位运算)(力扣)

> Problem: [260. 只出现一次的数字 III](260. 只出现一次的数字 III - 力扣&#xff08;LeetCode&#xff09;) # 思路 > 想到数组中只有一个数只出现了一次的解法&#xff1a;**所有数异或&#xff0c;最后答案就是那个只出现一次的数**&#xff0c;该题只需将两个不…

Kubernetes成本优化

云原生可以帮助团队更精细化利用资源&#xff0c;但如果缺乏工具的帮助&#xff0c;很难采取适当的措施优化资源的使用。本文介绍了若干用于可视化Kubernetes资源使用情况的工具&#xff0c;并且可以自定义策略优化资源使用&#xff0c;实现更好的成本优化。原文: Kubernetes C…

《WebKit 技术内幕》学习之十五(5):Web前端的未来

5 Crosswalk项目 Crosswalk项目是由英特尔公司发起的一个开源项目&#xff0c;该项目基于WebKit&#xff08;Blink&#xff09;和Chromium等开源项目打造&#xff0c;其目的是提供一个跨不同操作系统的Web运行环境&#xff0c;包括Android、Tizen、Linux、Windows、MacOS等众多…

python使用PaddleOCR实现《命名实体识别项目》OCR(已实现)(ai领域必看,简单易用)

1.简介&#xff1a; PaddleOCR是飞桨&#xff08;PaddlePaddle&#xff09;推出的一个端到端的光学字符识别开源工具集&#xff0c;支持中文、英文、数字以及特殊符号等各种类型的文字检测、识别和词语整体识别。该工具集使用PaddlePaddle深度学习框架技术&#xff0c;提供了多…

Likeshop多商户商城源码系统,支持二开

在电商行业高速发展的当下&#xff0c;拥有一套功能强大、易于操作的开源商城系统至关重要。Likeshop多商户商城系统正是这样一款集H5、小程序、独立APP于一体的开源电商解决方案&#xff0c;助力商家实现智能营销。 一、产品简介 Likeshop多商户商城系统为商家提供了丰富的营…