力扣每日一题 -- 2919. 使数组变美的最小增量运算数

       //这题本质还是一个背包问题
        //怎么去思考这个问题呢
        //我最开始的思想是根据经验来看,最小增量运算数,并且使数组变美丽,那么就有点像编辑距离的问题
        //但是我看了下时间复杂度,不能是n^2,那么再去仔细思考一下,看到该数组是美丽的,并且美丽的代价是
        //长度大于等于3的连续任意子数组是美丽的就是正确的,我们从长度大于等于3这里桌上
        //一定要知道长度大于等于3,这个是这题的关键解决点
        //那么根据动态规划的思想,先去从前往后推导
        
        //惊奇的发现这道题有点像背包问题dp和状态机dp

        //那么我们可以状态定义一下试一下
        //f[i][0]表示从前i个物品当中选出物品,并且第i个物品没有选且是美丽的
        //f[i][1]表示从前i个物品当中选出物品,并且第i个物品没有选且是美丽的

        //假设当前是第i个
        //那么能转移到第i个的可以由那几个状态转移并推导到当前第i位时的状态
        //第i - 3个,i - 2个,i - 1个可以推导过来
        //1.如果是第i - 3推导过来的话(并且是选了第 i- 3这个物品)
        //  那么当前第i位一定要选,如果不选的话,就不能成为美丽数组
        //  如果第i - 3位没选的话,那么不能从i - 3位转移到第i位
        //那么第i - 3个转到第i个的状态转移方程就是
        //f[i][1] = max(0,k - a[i]) + f[i - 3][1]  //最开始错了一次,我是都初始化成了0x3f3f3f3f,但是这样会导致状态转移很麻烦,因为这样还得判断
        //是否前面的状态是0x3f3f3f3f,索性我就让他转变成0就行(如果该点大于的话)
        
        //2.如果是第i - 2个转移到第i个的话
        //  那么第i个可以分为选或不选
        //  第i个选的话,那么可以从第i - 2个不选和第i - 2个选表示出来
        //  f[i][1] = f[i - 2][1] + max(0,k - a[i]);
        //  f[i][0] = f[i - 2][1];

        //第i - 1个同理
 

 


class Solution {
public:long long minIncrementOperations(vector<int>& nums, int k) {vector<vector<long long>> f(nums.size(),vector<long long>(2,0));//这题本质还是一个背包问题//怎么去思考这个问题呢//我最开始的思想是根据经验来看,最小增量运算数,并且使数组变美丽,那么就有点像编辑距离的问题//但是我看了下时间复杂度,不能是n^2,那么再去仔细思考一下,看到该数组是美丽的,并且美丽的代价是//长度大于等于3的连续任意子数组是美丽的就是正确的,我们从长度大于等于3这里桌上//一定要知道长度大于等于3,这个是这题的关键解决点//那么根据动态规划的思想,先去从前往后推导//惊奇的发现这道题有点像背包问题dp和状态机dp//那么我们可以状态定义一下试一下//f[i][0]表示从前i个物品当中选出物品,并且第i个物品没有选且是美丽的//f[i][1]表示从前i个物品当中选出物品,并且第i个物品没有选且是美丽的//假设当前是第i个//那么能转移到第i个的可以由那几个状态转移并推导到当前第i位时的状态//第i - 3个,i - 2个,i - 1个可以推导过来//1.如果是第i - 3推导过来的话(并且是选了第 i- 3这个物品)//  那么当前第i位一定要选,如果不选的话,就不能成为美丽数组//  如果第i - 3位没选的话,那么不能从i - 3位转移到第i位//那么第i - 3个转到第i个的状态转移方程就是//f[i][1] = max(0,k - a[i]) + f[i - 3][1]  //最开始错了一次,我是都初始化成了0x3f3f3f3f,但是这样会导致状态转移很麻烦,因为这样还得判断//是否前面的状态是0x3f3f3f3f,索性我就让他转变成0就行(如果该点大于的话)//2.如果是第i - 2个转移到第i个的话//  那么第i个可以分为选或不选//  第i个选的话,那么可以从第i - 2个不选和第i - 2个选表示出来//  f[i][1] = f[i - 2][1] + max(0,k - a[i]);//  f[i][0] = f[i - 2][1];//第i - 1个同理for(int i = 0; i < nums.size();i++)if(nums[i] >= k)//初始化,避免加上已经大于等于k的值{f[i][0] = 0x3f3f3f3f;  }f[0][1] = max(0,k - nums[0]);//这个本质是这样的k > nums[0] ? k-nums[0] : 0;,但是我们这里提供一个比较简单的方法f[1][1] = max(0,k - nums[1]);f[2][1] = max(0,k - nums[2]);int n = nums.size();for(int i = 3; i < n; i++){f[i][1] = min(min(f[i-3][1],f[i-2][1]),f[i-1][1])+max(0,k-nums[i]);f[i][0] = min(f[i-2][1],f[i-1][1]);}long long ans = 1e14;for(int i = n - 3;i < n;i++){//ans = min(ans,min(f[i][1],f[i][0]));//答案不能这么写,因为我们是判断最后3位哪个选最大值//选了后面,就不用加了ans = min(ans,f[i][1]);}return ans;}
};

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

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

相关文章

六大排序算法:插入、选择、冒泡、快排、希尔、归并

1、插入排序 解析&#xff1a;第一个元素设定为已经排好序&#xff0c;依次选择后续的元素插入到已经排好序的组内进行排序。 图示&#xff1a; 代码&#xff1a; public static void insertionSort(int[] arr) {int n arr.length;for (int i 1; i < n; i) {int key a…

网络爬虫的实战项目:使用JavaScript和Axios爬取Reddit视频并进行数据分析

概述 网络爬虫是一种程序或脚本&#xff0c;用于自动从网页中提取数据。网络爬虫的应用场景非常广泛&#xff0c;例如搜索引擎、数据挖掘、舆情分析等。本文将介绍如何使用JavaScript和Axios这两个工具&#xff0c;实现一个网络爬虫的实战项目&#xff0c;即从Reddit这个社交媒…

洛谷P1024 [NOIP2001 提高组] 一元三次方程求解(优雅的暴力+二分,干净利落)

P1024 [NOIP2001 提高组] 一元三次方程求解 前言题目题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 题目分析注意事项 代码后话额外测试用例样例输入 #2样例输出 #2 王婆卖瓜 题目来源 前言 没有前言&#xff0c;可能因为作者忘了编辑 题目 题目描述 有形如&…

Nginx默认会自动忽略请求头Headers里带下划线_的参数

起因&#xff1a;该接口设置了必须要传送app_code和app_secret才能正常访问。实际我在本地环境测试中&#xff0c;发现该接口是正常访问的&#xff0c;但是部署到正式系统之后发现&#xff0c;该接口一直提示app_code和app_secret不能为空。 后续排查&#xff1a;发现正式系统…

STM32 TIM定时器,配置,详解(1)

计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、自动重载寄存器(TIMx_ARR)。 PSC预分频器&#xff0c;顾名思义&#xff0c;先预备一下分频&#xff0c;有时候频率过高&#xff0c;后面的定时器承受不住&#xff0c;就先用PSC先分频一下。如何分频的&#xff1f;将每接受到…

ubuntu18.04上安装protubuf3.19.4

1、下载protobuf sudo wget https://github.com/protocolbuffers/protobuf/releases/download/v3.19.4/protobuf-all-3.19.4.tar.gz2、解压protobuf sudo tar -zxvf protobuf-all-3.19.4.tar.gz3、编译安装 cd protobuf-3.19.4sudo ./autogen.shsudo ./configure --prefix/us…

windows环境下安装Java过程(免登录Oracle官网下载java)

下载路径 oracle官网&#xff1a; java下载路径 Oracle共享账号可下载JDK&#xff1a; 指路 安装流程 执行下载后的jdk的可执行文件一路next下去&#xff0c; 可以自定义安装路径添加环境变量&#xff0c; 两个地方需要添加 在cmd中输入java -version 进行验证&#xff0c;…

计算/存储虚拟化高级特性

目录 计算虚拟化特性 HA高可用 虚拟机热迁移 虚拟机快照技术 存储虚拟化特性 链接克隆 存储热迁移 裸设备映射 计算虚拟化特性 HA高可用 通过HA&#xff08;High Available&#xff09;机制&#xff0c;可以提升虚拟机的可用度&#xff0c;允许虚拟机所在的服务器节点…

IP代理如何选择?4大误区你别踩!

近年来&#xff0c;我国互联网商业保持持续发展的状态大环境的优化&#xff0c;大大小小的企业都想乘胜追击&#xff0c;大展宏图&#xff0c;积极推动各项数据业务的进程。 而对于跨境业务来说&#xff0c;代理IP是不可或缺的重要工具之一&#xff0c;市面上代理IP类型众多&a…

每日一题(LeetCode)----数组--二分查找(四)

每日一题(LeetCode)----数组–二分查找&#xff08;四&#xff09; 1.题目&#xff08;367. 有效的完全平方数&#xff09; 给你一个正整数 num 。如果 num 是一个完全平方数&#xff0c;则返回 true &#xff0c;否则返回 false 。 完全平方数 是一个可以写成某个整数的平方…

获取狮子座明年恋爱运势预测API接口

获取狮子座明年恋爱运势预测API接口的功能是通过API接口获取狮子座明年恋爱运势的预测结果&#xff0c;为用户提供恋爱运势指导。 首先&#xff0c;使用挖数据平台该API接口需要先申请API密钥。在获取API密钥后&#xff0c;可以使用该接口进行开发。 API接口地址为&#xff1a…

基于卷积优化算法的无人机航迹规划-附代码

基于卷积优化算法的无人机航迹规划 文章目录 基于卷积优化算法的无人机航迹规划1.卷积优化搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用卷积优化算法来优化无人机航迹规划。 …

【空调】空调主控板实习记录

空调主控板实习笔记记录1 空调型号 空调kfr35gw什么意思 { 这个表示空调是3500W的&#xff0c;是1.5匹空调。 除了以上所说&#xff0c;空调主要机型的型号标识及其含义&#xff1a; KFR-25GW&#xff0c;简称25机型。KFR-35GW&#xff0c;简称35机型。KFR-50LW&#xff0c…

跨境电商,用指纹浏览器还是VPS?有何区别?

目前做跨境电商的小伙伴基本都是选择vps或者指纹浏览器来防关联。不过随着指纹浏览器的普及&#xff0c;越来越多人选择使用指纹浏览器&#xff0c;还没了解过指纹浏览器的小伙伴可能还在犹豫&#xff0c;vps和指纹浏览器到底哪个更好呢&#xff1f; Vps就是一个虚拟服务器&…

sql学习笔记(三)

目录 1.四舍五入 2.向上取整 3.向下取整 4.Hive 分区 5.case when条件语句 6.日期函数 7.字符串函数 8.窗口函数 1️⃣排序函数 1.四舍五入 round select round(3.14) —>3 2.向上取整 ceiling select ceiling(12.15) —>13 3.向下取整 floor select flo…

计算机服务器中了locked勒索病毒怎么办,勒索病毒解密,数据恢复

随着网络技术的不断成熟&#xff0c;网络中存在的病毒威胁也不断增多&#xff0c;近期&#xff0c;云天数据恢复中心陆续接到很多企业的求助&#xff0c;企业的计算机服务器数据库遭到了勒索病毒攻击&#xff0c;并且勒索病毒的攻击与加密形式也发生了许多变化。其中攻击次数较…

jenkins部署job

apt install fontconfig openjdk-11-jre wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.429/jenkins.wardeb包安装 wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/debian-stable/jenkins_2.414.3_all.debdpkg -i jenkins_2.414.3_all.deb 访问 http://…

【亲测可用】SpringBoot使用Redis的Lettuce连接池报RedisCommandTimeoutException

目录 一、问题详情 二、根本原因 三、解决方案 一、问题详情 在最近新项目的开发当中,当项目刚启动的时候访问Redis服务一切正常,但是过了几分钟后再次访问Redis就报如下错误。 Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeoutExcept…

ElasticSearch高级功能详解与原理剖析

ES数据预处理 Ingest Node Elasticsearch 5.0后&#xff0c;引入的一种新的节点类型。默认配置下&#xff0c;每个节点都是Ingest Node&#xff1a; 具有预处理数据的能力&#xff0c;可拦截lndex或Bulk API的请求对数据进行转换&#xff0c;并重新返回给Index或Bulk APl 无…

第一篇-专题说明及当前进度

第一篇-专题说明及当前进度 专题说明及写作目的 从知道Rust、决定要学Rust到开始学Rust经历了一些时间&#xff0c;后面进一步了解C之后又鉴定了学习Rust的必要性。 鉴于Rust学习来有些痛苦&#xff0c;有点难&#xff0c;以及工作中暂时用不到、目前主要是go&#xff0c;本…