力扣每日一题---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.hqwc.cn/news/417634.html

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

相关文章

Java毕业设计-基于ssm的网上求职招聘管理系统-第85期

获取源码资料&#xff0c;请移步从戎源码网&#xff1a;从戎源码网_专业的计算机毕业设计网站 项目介绍 基于ssm的网上求职招聘管理系统&#xff1a;前端 jsp、jquery&#xff0c;后端 springmvc、spring、mybatis&#xff0c;角色分为管理员、招聘人员、用户&#xff1b;集成…

关于大模型学习中遇到的3

来源&#xff1a;网络 Embedding模型 随着大型语言模型的发展&#xff0c;以ChatGPT为首&#xff0c;涌现了诸如ChatPDF、BingGPT、NotionAI等多种多样的应用。公众大量地将目光聚焦于生成模型的进展之快&#xff0c;却少有关注支撑许多大型语言模型应用落地的必不可少的Embed…

linux 安装nginx

介绍 官网 https://nginx.org/en/download.html 在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel linux 检查是否安装过某软件包 yum -y install gcc pcre-devel zlib-devel openssl openssl-devel #下载 wget https://nginx.org/downloa…

Python实例:根据总步数计算消耗的热量值

随着人们对健康和运动的关注不断增加&#xff0c;越来越多的人开始关注自己的运动量和消耗的热量。在这个实例中&#xff0c;我们将使用Python来根据总步数计算消耗的热量值。这个实例可以帮助我们更好地理解Python中的数学计算和数据处理&#xff0c;并且让我们更清晰地了解运…

2024最新最全ChatGPT角色Prompt预设词教程

使用指南 1、可直复制使用 2、可以前往已经添加好Prompt预设的AI系统测试使用&#xff08;可自定义添加使用&#xff09; https://ai.sparkaigf.com 雅思写作考官 我希望你假定自己是雅思写作考官&#xff0c;根据雅思评判标准&#xff0c;按我给你的雅思考题和对应答案给我…

考研C语言刷编程题篇之分支循环结构基础篇(一)

目录 第一题 第二题 方法一&#xff1a;要循环两次&#xff0c;一次求阶乘&#xff0c;一次求和。 注意&#xff1a;在求和时&#xff0c;如果不将sum每次求和的初始值置为1&#xff0c;那么求和就会重复。 方法二&#xff1a; 第三题 方法一&#xff1a;用数组遍历的思想…

【设计模式-06】Observer观察者模式

简要说明 事件处理模型 场景示例&#xff1a;小朋友睡醒了哭&#xff0c;饿&#xff01; 一、v1版本(披着面向对象的外衣的面向过程) /*** description: 观察者模式-v1版本(披着面向对象的外衣的面向过程)* author: flygo* time: 2022/7/18 16:57*/ public class ObserverMain…

thinkadmin表单上传单图,多图,单文件,多文件

{extend name="../../admin/view/main"}{block name=content} <form action="{:sysuri()}" class="layui-card layui-form" data-auto="tr

安装pycharm

1.浏览器打开链接 PyCharm: the Python IDE for Professional Developers by JetBrains 2.开始下载 3.下载windows版本的软件 4.双击运行软件&#xff0c;点击下一步 5.安装路径默认不进行修改 6.选项全部勾选&#xff0c;点击下一步 7.开始安装 8.选择稍后重启 9.桌面生成图标…

三国游戏(寒假每日一题+贪心、枚举)

题目 小蓝正在玩一款游戏。 游戏中魏蜀吴三个国家各自拥有一定数量的士兵 X,Y,Z&#xff08;一开始可以认为都为 0&#xff09;。 游戏有 n 个可能会发生的事件&#xff0c;每个事件之间相互独立且最多只会发生一次&#xff0c;当第 i个事件发生时会分别让 X,Y,Z 增加 Ai,Bi…

elasticsearch6.6.0设置访问密码

elasticsearch6.6.0设置访问密码 第一步 x-pack-core-6.6.0.jar第二步 elasticsearch.yml第三步 设置密码 第一步 x-pack-core-6.6.0.jar 首先破解 x-pack-core-6.6.0.jar 破解的方式大家可以参考 https://codeantenna.com/a/YDks83ZHjd 中<5.破解x-pack> 这部分 , 也可…

AutoRuns下载安装使用教程(图文教程)超详细

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 AutoRuns 是微软提供的一款「启动项管理」工具&#xff0c;可以检查开机自动加载的所有程…