蓝桥杯集训·每日一题2024 (差分)

前言:

差分笔记以前就做了,在这我就不再写一遍了,直接上例题。

例题:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int a[10009],b[100009];
int main(){
	int n,ans1=0,ans2=0;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		cin>>b[i];
	}
	for(int i=1;i<=n;i++){
		a[i]=a[i]-b[i];
	}
	for(int i=n;i>=1;i--){
		a[i]=a[i]-a[i-1];
		if(a[i]>0)ans1+=a[i];
		else ans2-=a[i];
	}
	cout<<max(ans1,ans2)<<endl;
	return 0;
}

题目要求同时将一段子数组全部加上1或者减去1, 直觉上就考虑采用差分数组的思想, 将原数组每一项的原始温度减去目标温度, 得到每一项需要改变的数值, 然后求出该数组的差分数组, 目标是使得差分数组的每一项变成0, 我们的操作方式有2种:选择任意两项, 一项加1, 另一项减1选择任意一项加1或者减1显然, 使数组全部变为0的最少操作方案就是 差分数组中负数和与正数和的绝对值的最大值。

相关推荐
L_cl3 分钟前
【Python 算法零基础 4.排序 ① 选择排序】
数据结构·算法·排序算法
山北雨夜漫步1 小时前
机器学习 Day18 Support Vector Machine ——最优美的机器学习算法
人工智能·算法·机器学习
拼好饭和她皆失1 小时前
算法加训之最短路 上(dijkstra算法)
算法
瓦力wow3 小时前
c语言 写一个五子棋
c语言·c++·算法
X-future4263 小时前
院校机试刷题第六天:1134矩阵翻转、1052学生成绩管理、1409对称矩阵
线性代数·算法·矩阵
Codeking__4 小时前
前缀和——中心数组下标
数据结构·算法
爱喝热水的呀哈喽4 小时前
非线性1无修
算法
花火QWQ4 小时前
图论模板(部分)
c语言·数据结构·c++·算法·图论
Pacify_The_North5 小时前
【进程控制二】进程替换和bash解释器
linux·c语言·开发语言·算法·ubuntu·centos·bash
轮到我狗叫了5 小时前
力扣310.最小高度树(拓扑排序,无向图),力扣.加油站力扣.矩阵置零力扣.二叉树中的最大路径和
算法·leetcode·职场和发展