首页 > 其他分享 >1547. 切棍子的最小成本

1547. 切棍子的最小成本

时间:2024-11-11 20:31:25浏览次数:1  
标签:1547 return int 最小 vector 棍子 cuts 气球 dp

  1. 题目链接

  2. 解题思路

    • 这个题和戳气球有相同的思想,戳气球是以「最后戳哪个气球」组织答案,这个题是,「先切哪个」组织答案
    • 戳气球
  3. 代码

    class Solution {
    public:
    
        // [L, R]上,怎么切?
        int process(vector<int> &cuts, int L, int R, vector<vector<int>> &dp) {
            if (L > R) {
                return 0;
            }
            if(L == R) {
                return cuts[R + 1] - cuts[L - 1];
            }
            if (dp[L][R] != -1) {
                return dp[L][R];
            }
            // 先切谁?
            int ans = INT32_MAX;
            for (int i = L; i <= R; ++i) {
                int next = process(cuts, L, i - 1, dp) + process(cuts, i + 1, R, dp) + cuts[R + 1] - cuts[L - 1];
                ans = min(ans, next);
            }
            dp[L][R] = ans;
            return ans;
        }
    
        int minCost(int n, vector<int>& cuts) {
            int m = cuts.size();
            sort(cuts.begin(), cuts.end());
            vector<int> newCuts(m + 2, 0);
            for (int i = 1; i <= m; ++i) {
                newCuts[i] = cuts[i - 1];
            }
            newCuts[m + 1] = n;
            vector<vector<int>> dp(m + 2, vector<int>(m + 2, -1));
            return process(newCuts, 1, m, dp);
        }
    };
    

标签:1547,return,int,最小,vector,棍子,cuts,气球,dp
From: https://www.cnblogs.com/ouyangxx/p/18540527

相关文章

  • 洛谷题单指南-二叉堆与树状数组-P2085 最小函数值
    原题链接:https://www.luogu.com.cn/problem/P2085题意解读:有n个函数,函数中x取值>=1,计算所有函数能得到的值中最小的m个。解题思路:函数中x取值是>=1的整数,因此每个函数的值是f(1),f(2),f(3)....,是一个递增序列,题目本质上是要从n个递增序列中找到前m个最小的数。首先,对所有函数......
  • 76. 最小覆盖子串
    题目链接解题思路求最小子串问题,第一时间,想「以i开头的结果是什么」,求出所有的结果,最优的便是;或者「以i结尾的结果是什么」,求出所有的结果,最优的便是这个题使用「以i开头的结果是什么」,假设是[i,j]然后再求i+1的结果时,我们发现,只需要把i位置的字符去掉,就可以知道是否满足......
  • 64. 最小路径和
    题目链接这道题目与62.不同路径很像,来到[i,j]位置,只能向下,或者向右走,只不过改题是要求总和最小。process(i,j):当前在[i,j]位置,返回最小路径和所以当在[i,j],如果还能往下走,一种答案就是process(i+1,j)+grid[i][j]如果还能往右走,另一种答案就是process(i,j+1)......
  • 并查集+最小生成树 学习笔记+杂题 1
    图论系列:前言:相关题单:戳我算法讲解:戳我代码可能过多啊,到时候页面别卡死了,所以就把代码最前面的缺省源删了(反正就是几个头文件/defineintlonglong,自己加一下即可)。并查集记得初始化,最小生成树记得排序。P3367【模板】并查集板子题,给定\(n\)个元素,有2种操作,一种合并,......
  • 【开源鸿蒙】OpenHarmony 5.0 轻量系统最小开发环境搭建
    本文将会介绍,如何下载源代码和工具链,让磁盘占用尽可能小的同时,还可以进行轻量系统上的OpenHarmony开发(进行源码编译构建)。最终实现了将磁盘占用从完整源码的67G减少到了15G,不到完整源码的四分之一磁盘占用!一、写在前面——为什么写本篇内容OpenHarmony5.0发布了,该版本系......
  • 并查集+最小生成树 学习笔记
    图论系列:前言:咲いた野の花よああどうか教えておくれ人は何故傷つけあって争うのでしょう相关题单:题单1题单2题单3题单4一.并查集1.基础定义与操作(1)定义并查集是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵树表示一个集合,树中的节点表示对应集合中的......
  • 代码随想录算法训练营第18天| 530.二叉搜索树的最小绝对差, 501.二叉搜索树中的众数 , 2
    530.二叉搜索树的最小绝对差文章链接:https://programmercarl.com/0530.二叉搜索树的最小绝对差.html视频链接:https://www.bilibili.com/video/BV1DD4y11779/?vd_source=6cb513d59bf1f73f86d4225e9803d47b题目链接:https://leetcode.cn/problems/minimum-absolute-difference-in......
  • python计算最小二乘法(附代码详细解释)
    最小二乘法(LeastSquaresMethod)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。在回归分析中,其目的是找到一条直线(对于简单线性回归而言)或者一个超平面(对于多元线性回归),使得观测值与预测值之间误差的平方和最小。这种方法拟合直线相对于理论线性拟合直......
  • 第八章: 8.10将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(四个角的元
    第八章:8.10将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(四个角的元素的顺序是从左到右,从上到下,依次从小到大存放)思考:1.输入矩阵的值inta[5][5]={0};   inti=0,j=0;   printf("请输入一个5*5的数组:\n");   for(i=0;i<5;......
  • clickhouse数据库,时间范围一周,周期为每一小时,聚合数据中的最新,最大值,最小值,平均值,求和
    工作中通过ai改来改去最后实现的,非常好用databaseVal举例:1HOURinterval:1WEEK最新,这里用到了ROW_NUMBER,就是编号,OVER就是分组,分组是通过一小时聚合,聚合后会有编号每一个组的,从1开始到该组结束,取每组的第一条就是最新的SELECTreport_timeAStimeInterval,cpu_usageAScpu......