力扣每日一题 -- 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;将每接受到…

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…

获取狮子座明年恋爱运势预测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://…

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

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

SpringSecurity6 | 委派筛选器代理和过滤器链代理

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Java从入门到精通 ✨特色专栏&#xf…

C++入门学习(1)命名空间和输入输出

前言 在C语言和基本的数据结构学习之后&#xff0c;我们终于迎来了期待已久的C啦&#xff01;C发明出来的意义就是填补一些C语言的不足&#xff0c;让我们更加方便的写代码&#xff0c;所以今天我们就来讲一下C语言不足的地方和在C中的解决办法&#xff01; 一、命名空间 在学习…

【机器学习3】有监督学习经典分类算法

1 支持向量机 在现实世界的机器学习领域&#xff0c; SVM涵盖了各个方面的知识&#xff0c; 也是面试题目中常见的基础模型。 SVM的分类结果仅依赖于支持向量&#xff0c;对于任意线性可分的两组点&#xff0c;它 们在SVM分类的超平面上的投影都是线性不可分的。 2逻辑回归 …

Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库

背景介绍 Apache Doris是一个基于MPP架构的易于使用&#xff0c;高性能和实时的分析数据库&#xff0c;以其极高的速度和易用性而闻名。海量数据下返回查询结果仅需亚秒级响应时间&#xff0c;不仅可以支持高并发点查询场景&#xff0c;还可以支持高通量复杂分析场景。 这些都…