力扣每日一题---1547. 切棍子的最小成本

 

        //当我们将棍子分段之后,我们是不是想到了怎么组合这些棍子

        //并且这些棍子有一个性质就是只能与相邻的进行组合

        //暴力搜索的话复杂度很高

        //在思考暴力搜索的时候,我们发现一个规律

        //比如棍子长度1 2 1 1 2

        //那么与最后一个2组合的棍子有,1 2,1 1 2,2 1 1 2,1 2 1 1 2

        //与最后一个1组合的棍子有,1 1,2 1 1,1 2 1 1

        //发现一个很显然的规律,能与前面组合的只有前面已经组合过的才能组合在一起

        //这是左边,那么当然还有右边

        //同理也是

        //然后根据规律总结一下公式

        //假设1 2 1 1 2,下标对应0 1 2 3 4

        //设f[i][j],表示组成这个区间的棍子的成本

        //那么想组成f[0][4] = f[0][3] + a[4];

        //f[1][4] = f[1][3] + a[4];

        //f[2][4] = f[2][3] + a[4];

        //f[3][4] = f[3][3] + a[4];

        //从这里又能看出我们组合肯定是根据范围从小到大进行组合的

        //比如f[1][3] = f[1][2] + f[2][3];那么在统计范围大的区间时

        //是由前面一个小范围推过来的,所以故此在计算大范围之前先统计小范围

        //故这就是动态规划的阶段

        //本题中我们求的是最小成本,那么需要把所有能组成f[0][4]的最小成本在推导时取个min就可以了

class Solution {
public:int minCost(int n, vector<int>& cuts) {sort(cuts.begin(),cuts.end());vector<int> a;int prev = 0;for(int i = 0;i < cuts.size();i++){a.push_back(cuts[i] - prev);prev = cuts[i];}a.push_back(n - prev);//当我们将棍子分段之后,我们是不是想到了怎么组合这些棍子//并且这些棍子有一个性质就是只能与相邻的进行组合//暴力搜索的话复杂度很高//在思考暴力搜索的时候,我们发现一个规律//比如棍子长度1 2 1 1 2//那么与最后一个2组合的棍子有,1 2,1 1 2,2 1 1 2,1 2 1 1 2//与最后一个1组合的棍子有,1 1,2 1 1,1 2 1 1//发现一个很显然的规律,能与前面组合的只有前面已经组合过的才能组合在一起//这是左边,那么当然还有右边//同理也是//然后根据规律总结一下公式//假设1 2 1 1 2,下标对应0 1 2 3 4//设f[i][j],表示组成这个区间的棍子的成本//那么想组成f[0][4] = f[0][3] + a[4];//f[1][4] = f[1][3] + a[4];//f[2][4] = f[2][3] + a[4];//f[3][4] = f[3][3] + a[4];//从这里又能看出我们组合肯定是根据范围从小到大进行组合的//比如f[1][3] = f[1][2] + f[2][3];那么在统计范围大的区间时//是由前面一个小范围推过来的,所以故此在计算大范围之前先统计小范围//故这就是动态规划的阶段//本题中我们求的是最小成本,那么需要把所有能组成f[0][4]的最小成本在推导时取个min就可以了//1 2 1 1 2int f[110][110];memset(f,0x3f3f3f3f,sizeof(f));vector<int> b(a.size() + 1);for(int i = 0;i < a.size();i++) b[i + 1] = a[i];for(int i = 1;i <= a.size();i++) f[i][i] = 0;int s[110];memset(s,0,sizeof(s));for(int i = 1;i <= a.size();i++) s[i] = s[i - 1] + b[i]; for(int len = 2;len <= a.size();len++)//枚举的范围和阶段{for(int l = 1;l + len - 1<= a.size();l++)//确定范围,把当前阶段的状态都枚举出来{int r = l + len - 1;for(int k = l;k < r;k++)//确定好范围之后,我们就可以更新当前范围的状态了//怎么样保证不漏掉呢,只要枚举l <= k < r之间的k就行,可以保证所有状态都有{ f[l][r] = min(f[l][r],f[l][k] + f[k + 1][r] + s[r] - s[l - 1]);}}}return f[1][a.size()];}
};

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

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

相关文章

【网络安全】-入门版

secure 一、基本工具1、metasploit framework ps.本着兴趣爱好&#xff0c;加强电脑的安全防护能力&#xff0c;并严格遵守法律和道德规范。一、基本工具 1、metasploit framework msf&#xff08;metasploit framework&#xff09;是一个开源的渗透测试框架&#xff0c;用于…

Qt QCustomPlot 绘制子轴

抄大神杰作&#xff1a;QCustomplot&#xff08;五&#xff09;QCPAxisRect进行子绘图-CSDN博客文章浏览阅读5.9k次&#xff0c;点赞7次&#xff0c;收藏60次。文中介绍了QCustomPlot 子绘图需要掌握的类&#xff0c;也就是Matlab中的subplot&#xff0c;最后给出了一个完整的例…

Flash读取数据库中的数据

Flash读取数据库中的数据 要读取数据库的记录&#xff0c;首先需要建立一个数据库&#xff0c;并输入一些数据。数据库建立完毕后&#xff0c;由Flash向ASP提交请求&#xff0c;ASP根据请求对数据库进行操作后将结果返回给Flash&#xff0c;Flash以某种方式把结果显示出来。 …

flink基础概念之什么是时间语义

什么是时间语义 Flink支持三种不同的时间语义&#xff0c;以便处理流式数据中的事件时间、处理时间和摄入时间。 1. 处理时间&#xff08;Processing Time&#xff09; 处理时间的概念非常简单&#xff0c;就是指执行处理操作的机器的系统时间。 在这种时间语义下处理窗口非…

算法练习-替换数字(思路+流程图+代码)

难度参考 难度&#xff1a;简单 分类&#xff1a;字符串 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。以下内容均为个人笔记&#xff0c;旨在督促自己认真学习。 题目 给定一个字符串S,它包含小写字母和数字字符&#xff0…

图论:最短路(dijkstra算法、bellman算法、spfa算法、floyd算法)详细版

终于是学完了&#xff0c;这个最短路我学了好几天&#xff0c;当然也学了别的算法啦&#xff0c;也是非常的累啊。 话不多说下面看看最短路问题吧。 最短路问题是有向图&#xff0c;要求的是图中一个点到起点的距离&#xff0c;其中我们要输入点和点之间的距离&#xff0c;来求…

2024年【金属非金属矿山(地下矿山)安全管理人员】证考试及金属非金属矿山(地下矿山)安全管理人员模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员】证考试及金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员模拟考试题库&#xff0c;包含金属非金属矿山&#xff08;地下矿山&…

Spring DI

目录 什么是依赖注入 属性注入 构造函数注入 Setter 注入 依赖注入的优势 什么是依赖注入 依赖注入是一种设计模式&#xff0c;它通过外部实体&#xff08;通常是容器&#xff09;来注入一个对象的依赖关系&#xff0c;而不是在对象内部创建这些依赖关系。这种方式使得对象…

复现PointNet++(语义分割网络):Windows + PyTorch + S3DIS语义分割 + 代码

一、平台 Windows 10 GPU RTX 3090 CUDA 11.1 cudnn 8.9.6 Python 3.9 Torch 1.9.1 cu111 所用的原始代码&#xff1a;https://github.com/yanx27/Pointnet_Pointnet2_pytorch 二、数据 Stanford3dDataset_v1.2_Aligned_Version 三、代码 分享给有需要的人&#xf…

wsl利用netsh端口转发实现http代理

1、端口转发 netsh interface portproxy add v4tov4 listenaddress192.168.1.102 listenport10086 connectaddress127.0.0.1 connectport99992 端口检查 上面命令执行完成后&#xff0c;检查命令是否执行成功 netsh interface portproxy show all检查端口是否正常监听 nets…

SpiderFlow爬虫平台漏洞利用分析(CVE-2024-0195)

1. 漏洞介绍 SpiderFlow爬虫平台项目中spider-flow-web\src\main\java\org\spiderflow\controller\FunctionController.java文件的FunctionService.saveFunction函数调用了saveFunction函数&#xff0c;该调用了自定义函数validScript&#xff0c;该函数中用户能够控制 functi…

LLM:ALiBi - 给注意力加上线性偏置

论文&#xff1a;https://arxiv.org/pdf/2108.12409.pdf 代码&#xff1a;https://github.com/ofirpress/attention_with_linear_biases 发表&#xff1a;2021 长度外推 参考&#xff1a;https://spaces.ac.cn/archives/9431#ALIBI 长度外推性是一个训练和预测的长度不一致…

HTML+JavaScript-01

说明 之前有一篇JavaWeb-JavaScript中只是简单介绍了一点JavaScript的内容&#xff0c;这篇笔记算是续写的&#xff0c;但是从01开始编号。 引入js文件 html、css、js俗称前端三剑客&#xff0c;一般都是分开写&#xff0c;先写框架、再写css、最后写js。因此在工程量大的情…

设计模式——装饰者模式

更多内容&#xff0c;前往 IT-BLOG 现实生活中常常需要给某类产品动态增加新的功能&#xff0c;如&#xff1a;给面条各种调味品。在软件开发过程中&#xff0c;有时想用一些现存的组件。这些组件可能只是完成一些核心功能。但在不改变其架构的情况下&#xff0c;可以动态地扩展…

《WebKit 技术内幕》之五(1): HTML解释器和DOM 模型

第五章 HTML 解释器和 DOM 模型 1.DOM 模型 1.1 DOM标准 DOM &#xff08;Document Object Model&#xff09;的全称是文档对象模型&#xff0c;它可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。这里的文档可以是 HTML 文档、XML 文档或者 XHTML 文档。D…

【数学建模】图论模型

文章目录 图的基础理论及networkx简介图的基本概念图的表示及Networkx简介图的表示NetworkX简介 最短路算法及其Python实现固定起点到其余各点的最短路算法每对顶点间的最短路算法最短路应用 最小生成树算法及其networkx实现基本概念最小生成树算法最小生成树应用 匹配问题最大…

Qt5.15.2中加入图片资源

系列文章目录 文章目录 系列文章目录前言一、加入图片资源二、代码 前言 以前用的Qt5.15.2之前的版本&#xff0c;QtCreator默认的工程文件是*.pro&#xff0c;现在用5.15.2创建工程默认的工程文件是CMameList.txt,当然在创建项目时&#xff0c;仍然可以使用pro工程文件用QtCr…

13.浮动面板(PaletteSet)

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET FrameWork4.5、ObjectArx 2016 64bit、Entity Framework 6. 在CAD中进行通用组件开发或常驻界面的控件开发时&#xff0c;可使用PaletteSet作为停靠面板&#xff0c;然后将自己的空间放入其中。 1.示例 SearchRe…

web terminal - 如何在mac os上运行gotty

gotty可以让你使用web terminal的方式与环境进行交互&#xff0c;实现终端效果 假设你已经配置好了go环境&#xff0c;首先使用go get github.com/yudai/gotty命令获取可执行文件&#xff0c;默认会安装在$GOPATH/bin这个目录下&#xff0c;注意如果你的go版本比较高&#xff…

小程序系列--10.小程序WXS 脚本

一、概述 1. 什么是 wxs&#xff1f; WXS&#xff08;WeiXin Script&#xff09;是小程序独有的一套脚本语言&#xff0c;结合 WXML&#xff0c;可以构建出页面的结构。 2. wxs 的应用场景 wxml 中无法调用在页面的 .js 中定义的函数&#xff0c;但是&#xff0c;wxml 中可…