首页 > 其他分享 >lc1547 切割棍子的最小成本

lc1547 切割棍子的最小成本

时间:2024-03-21 22:22:51浏览次数:17  
标签:return 切割 int auto lc1547 dfs 棍子 cuts dp

有一根长度为n的木棍,从0到n标记了若干个位置。给定一个数组cuts[m],表示要在cuts[i]位置切开,每次切割的成本是当前木棍的长度,求总成本的最小值。
2<=n<=1e6; 1<=m<=min(n-1,100); 1<=cuts[i]<=n-1; cuts[i]各不相同

正向思考的话可以记忆化dfs,也可以逆向思考,转成合并问题,用区间dp求解。这里用的是记忆化dfs。

class Solution {
public:
    int dp[105][105];
    int minCost(int n, vector<int>& cuts) {
        int m = cuts.size();
        sort(cuts.begin(), cuts.end());
        memset(dp, -1, sizeof(dp));
        auto sum = [&](int L, int R) -> int {
            int x = 0, y = n;
            if (L != 0) x = cuts[L-1];
            if (R != m-1) y = cuts[R+1];
            return y-x;
        };
        auto dfs = [&](auto self, int L, int R) -> int {
            if (L > R) return 0;
            if (dp[L][R] != -1) return dp[L][R];
            int ans = 1e9;
            for (int i = L; i <= R; i++) {
                ans = min(ans, self(self,L,i-1) + self(self,i+1,R));
            }
            ans += sum(L,R);
            return dp[L][R] = ans;
        };
        return dfs(dfs, 0, m-1);
    }
};

标签:return,切割,int,auto,lc1547,dfs,棍子,cuts,dp
From: https://www.cnblogs.com/chenfy27/p/18088374

相关文章

  • 实现Python pdf切割 ValueError: seek of closed file
    参考网上的教材,实现pdf文件的切割,提示一个问题ValueError:seekofclosedfile原来是pdf文件关闭导致的问题。将其改成一个程序就解决了。importPyPDF2pdf_path=r'E:\zhuanxie\jpm\2.pdf'out_path=r'E:\zhuanxie\jpm\23.pdf'#切割PDF文件start_page=1end_page=......
  • nginx日志切割备份
    直接上脚本#!/bin/bash#源日志目录logs_path="/logs/nginx"#备份日志目录back_logs_path="${logs_path}/backup/$(date-d'yesterday'+'%F')"#创建备份目录,以日期命名,注意,每天零点整切割,开始记录新的一天的日志,备份目录应该是昨天mkdir-p${back_logs_path}#重命......
  • 2024.2.18 捶打我天然的沉默 切割我卑微与困惑
    今天是DS选讲,理解了大部分内容,还有一些自己口胡了,很好。ARC打的有点难受,因为电脑有点稀碎(指编译1min+),机房的电脑又用不习惯。具体表现为会E差一点过,可惜。CF713CSonyaandProblemWihtoutaLegendslopetrick入门题。具体的,写出DP会发现只需要支持取前缀min,加入......
  • 【算法】【动态规划】钢条切割
    1 题目来自算法导论的一道经典题目:2 解答动态规划原理虽然已经用动态规划方法解决了上面问题,但是大家可能还跟我一样并不知道什么时候要用到动态规划。总结一下上面的斐波拉契数列和钢条切割问题,发现两个问题都涉及到了重叠子问题,和最优子结构。①最优子结构用动态规......
  • mask2former出来的灰度图转切割轮廓后的二值图
    切割后的灰度图切割后的原图转成二值图代码如下点击查看代码#ThisisasamplePythonscript.importcv2importnumpyasnp#PressShift+F10toexecuteitorreplaceitwithyourcode.#PressDoubleShifttosearcheverywhereforclasses,files,toolwin......
  • 将日志的每天都切割成单独的一个日志文件
    要将日志文件按照日期精确分割成每天一个文件,我们需要知道日志中,日期的精确格式,并且日志应该是按时间顺序排列的。这里给出一个基于Apache/Nginx日志格式(每行开始有标准的日期和时间戳)的例子脚本。我们将使用awk和date命令配合处理:#!/bin/bash#指定日志文件夹路径LOG_DIR="/pat......
  • nginx切割日志部署脚本编写
    #!/bin/bash#utf-8#description:部署nginx_lograte.sh脚本#---------------------------------------------------------------------script_name="logrotate_new.sh"script_download_directory="http://172.20.147.61/CentOS/app/script/hby"#......
  • nginx日志切割脚本
    #!/bin/bash#utf-8#description:nginx滚动切割脚本,按照500M进行滚动切割#---------------------------------------------------------------------log_directory="/export/servers/nginx/logs"#日志文件目录max_size=500#日......
  • 1、excel字符切割函数
    目录excel字符切割函数1、left函数2、RIGHT函数3、MID函数4、FIND函数5、SUBSTITUTE函数excel字符切割函数1、left函数从左边开始截取位数。=left("ABCD",2)输出:AB2、RIGHT函数从右边开始截取位数。=RIGHT("ABCD",2)输出:CD3、MID函数从左边任意3位置(包含)开始截取,连......
  • 【linux日常】---mongdb日志切割
    前提操作导入包管理系统使用的公钥从终端发出以下命令以从https://www.mongodb.org/static/pgp/server-4.4.asc导入MongoDB公共GPG密钥:wget-qO-https://www.mongodb.org/static/pgp/server-4.4.asc|sudoapt-keyadd-返回的应是ok但是,如果您收到指示gnupg未安装......