区间加减使得数组变成指定类型

news2024/11/13 9:22:00

在这里插入图片描述

这个问题要怎么去考虑呢,首先我们将两个数组做差得到相对大小,问题就变成了把我们构造的数组通过区间加一或者区间减一变成全部都是0的最小次数

这里就涉及到我们的一个技巧,我们需要把负数序列和正数序列分开处理,如何能得到最小的次数呢
我们要用f[i] - f[i-1] 如果结果大于0,则我们的ans + 上这个结果

class Solution {
public:
    long long minimumOperations(vector<int>& nums, vector<int>& target) {
        long long ans = 0;
        int n = nums.size();
        vector<int> t(n + 1);
        vector<int> fushu(n + 1);
        for (int i = 0; i < n; i++) {
            fushu[i+1] = t[i+1] = nums[i] - target[i];
            if (fushu[i+1] > 0) fushu[i+1] = 0;
            if (t[i+1] < 0) t[i+1] = 0;
        }
        for (int i = 1; i <= n; i++) {
            int u = fushu[i - 1] - fushu[i];
            if (u > 0) ans += u;
        }
        for (int i = 1; i <= n; i++) {
            int u = t[i] - t[i - 1];
            if (u > 0) ans += u;
        }
        return ans;
    }
};

在这里插入图片描述

这个题目就简单许多了,我们把每一个数字都减一,就转换成我们上面那个问题了

#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
using namespace std;

int t, n;
const int N = (int)1e6 + 5;
int a[N];
int main() {
	cin >> t;
	while (t--) {
		cin >> n;
		for (int i = 1; i <= n; i++) {
			cin >> a[i]; a[i] -= 1;
		}
		int ans = 0;
		for (int i = 1; i <= n; i++) {
			int t = a[i] - a[i - 1];
			if (t > 0) ans += t;
		}
		cout << ans << endl;
	}
}

我们再区别一下下面这道题
在这里插入图片描述
这个题目怎么想呢,我们并不需要关注最后的值会变成什么,可以看做最小值弥补其与其他值的差距,为什么这么说呢,设每次都是最大值不加一,那么第一次就是 max - min 次数,接着次大值变成最大值,且其与我们最小值的差距是不变的

class Solution:
    def minMoves(self, nums: List[int]) -> int:
        ans = 0
        xiao = min(nums)
        for i in nums:
            ans += i - xiao
        return ans

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

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

相关文章

SpringCloud的认识和初步搭建

目录 一.认识SpringCloud 二.SpringCloud的部署 2.1开发环境 2.2数据库的建立 2.3SpringCloud的部署 第一步&#xff1a; 创建Maven项目 第二步&#xff1a;完善pom文件 第三步&#xff1a;创建两个子项目 第四步&#xff1a;声明项目依赖以及构建插件 第五步&#xf…

vue2集成markdown编辑器及前台渲染

效果展示 后台编辑器 前台渲染 后台编辑器步骤 安装包 npm i kangc/v-md-editor -Smain.js里全局注册 编辑器VueMarkdownEditor组件 import Vue from vue; import VueMarkdownEditor from kangc/v-md-editor; import kangc/v-md-editor/lib/style/base-editor.css; im…

Docker核心技术:应用架构演进

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Docker核心技术 系列文章&#xff1a;应用架构演进&#xff0c;其他文章快捷链接如下&#xff1a; 应用架构演进&#xff08;本文&#xff09;容器技术要解决哪些问题Docker的基本使用Docker是如何实现的 1.1.架…

matlab simulink气隙局部放电仿真技术研究

1、内容简介 略 87-可以交流、咨询、答疑 2、内容说明 略 为了解决目前国内外局部放电仿真方法难以计算气隙局部放电暂态过程的问题 , 利用 MATLAB (SIMULINK ) 的公共模块库和电力系统专业模块库 , 根据单气隙局部放电仿真物理模型 , 构造了气隙局部放 电仿真计算的电…

进程间通信——共享内存,信号量,信号

进程 VS 线程通信 进程&#xff1a;共享内存&#xff0c;消息队列&#xff0c;管道&#xff0c;信号&#xff08;条件变量&#xff0c;锁&#xff0c;信号量需要搭配共享内存使用&#xff09;&#xff1b; 线程&#xff1a;信号&#xff0c;条件变量&#xff0c;锁&#xff0c…

C语言·分支和循环语句(超详细系列·全面总结)

前言&#xff1a;Hello大家好&#x1f618;&#xff0c;我是心跳sy&#xff0c;为了更好地形成一个学习c语言的体系&#xff0c;最近将会更新关于c语言语法基础的知识&#xff0c;今天更新一下分支循环语句的知识点&#xff0c;我们一起来看看吧~ 目录 一、什么是语句&#xf…

C语言航空售票系统

以下是系统部分页面 以下是部分源码&#xff0c;需要源码的私信 #include<stdio.h> #include<stdlib.h> #include<string.h> #define max_user 100 typedef struct ft {char name[50];//名字char start_place[50];//出发地char end_place[50];//目的地char …

【专项刷题】— 归并

1、排序数组 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 先找一个中间值&#xff0c;然后递归左边部分和递归右半部分直到左边和右边只剩一个数了就返回&#xff0c;然后再合并左右两个部分代码&#xff1a; class Solution {int[] tmp;public int[] sortArray(…

canvas:矢量点转栅格

案例描述 ArcGIS提供了“点转栅格”的工具,可以将矢量点转换为栅格数据,以下尝试基于canvas绘图技术,实现经纬度矢量点转换为canvas栅格数据,并在Cesium.js三维地图中进行渲染。 原始数据 转出栅格 案例分析 实现的关键点在于:如何将经纬度坐标与canvas画布坐标进…

Java代码基础算法练习-三角形判断-2024.07.21

任务描述&#xff1a; 解决思路&#xff1a; 一个函数&#xff0c;带入输入的三个边长参数&#xff0c;条件满足计算其周长、面积&#xff0c;否则不计算 代码示例&#xff1a; package a4_2024_07;import java.util.Scanner;public class j240721_2 {public static void mai…

Pytorch学习笔记【B站:小土堆】

文章目录 1 基础环境配置&#xff08;CPU版&#xff09;2 PyTorch学习2.1 Dataset和DataLoader2.1.1 Dataset2.1.2 DataLoader 2.2 Tensorboardadd_scalaradd_imageadd_graph 2.3 Transforms2.3.1 ToTensor2.3.2 Normalize2.3.3 Resize2.3.4 Compose 2.4 torchvision中的数据集…

MQTTX连接华为云IoTDA

目录 华为IoTDA平台 MQTTX连接参数的设置 物模型的构建 属性上报 基本数据格式 时戳 我以前上课都是用巴法云服务器来演示MQTT的&#xff0c;前几天因为测试工业互联网关使用了华为的IoTDA&#xff0c;觉得也不算太复杂&#xff0c;今天尝试用MQTTX连接华为云&#xff0c…

NLP: 词袋模型和TFIDF模型

文章目录 词袋模型TF-IDF模型词汇表模型 词袋模型 文本特征提取有两个非常重要的模型&#xff1a; 词集模型&#xff1a;单词构成的集合&#xff0c;集合自然每个元素都只有一个&#xff0c;也即词集中的每个单词都只有一个。 词袋模型&#xff1a;在词集的基础上如果一个单词…

DDPM扩散模型(模型结构图与公式推导)

DDPM扩散模型 一、前置知识 1. 条件概率知识 P ( A ∣ B ) P ( A B ) P ( B ) P(A|B) \frac{P(AB)}{P(B)} P(A∣B)P(B)P(AB)​ P ( A B C ) P ( C ∣ B A ) P ( B A ) P ( C ∣ B A ) P ( B ∣ A ) P ( A ) P(A B C) P(C|B A)P(BA) P(C|B A)P(B|A)P(A) P(ABC)P(C∣BA)P…

Java | 自制AWT单词猜一猜小游戏(测试版)

目录 游戏标题 开发过程 开发想法 技术栈 代码呈现 导包 核心代码 游戏标题 探索知识的迷宫&#xff0c;体验自制AWT单词猜一猜小游戏 在数字时代&#xff0c;学习可以是多彩的&#xff0c;游戏可以是智慧的。我们自豪地推出“单词猜猜猜”是一款结合了教育与娱乐的自制…

NODEJS复习(ctfshow334-344)

NODEJS复习 web334 下载源码代码审计 发现账号密码 代码逻辑 var findUser function(name, password){ return users.find(function(item){ return name!CTFSHOW && item.username name.toUpperCase() && item.password password; }); }; 名字不等于ctf…

2015年全国大学生数学建模竞赛B题出租车资源配置(含word论文和源代码资源)

文章目录 一、部分题目二、部分论文三、部分源代码问题1问题3 四、完整word版论文和源代码 一、部分题目 2015高教社杯全国大学生数学建模竞赛题目 B题 “互联网”时代的出租车资源配置 出租车是市民出行的重要交通工具之一&#xff0c;“打车难”是人们关注的一个社会热点问…

【CSS in Depth 2 精译_019】3.2 CSS 的盒模型

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…

STM32基础篇:USART(下)

双缓冲与连续发送 双缓冲 在发送数据的时候&#xff0c;首先将要发送的字节写入TDR中&#xff0c;然后TDR将此字节发生给移位寄存器&#xff0c;由移位寄存器执行串并转换&#xff0c;通过Tx引脚逐个比特位发送出去。 在此过程中&#xff0c;存在两级缓冲&#xff0c;即双缓…

[GIS实验]居住环境适宜性评价

目的&#xff1a; 拟购买住宅&#xff0c;需在现有条件下&#xff0c;基于地理空间分析方法和空间认知模型对居住环境进行综合评价。通过该实验掌握基于GIS的地理空间认知方法及土地适宜性评价基本原理与方法。 数据&#xff1a; &#xff08;1&#xff09;人口调查图&#…