蓝桥杯集训·每日一题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的最少操作方案就是 差分数组中负数和与正数和的绝对值的最大值。

相关推荐
0 0 07 分钟前
CCF-CSP 38-4 月票发行【C++】考点:动态规划DP+矩阵快速幂
c++·算法·动态规划·矩阵快速幂
北漂Zachary9 分钟前
Mysql中使用sql语句生成雪花算法Id
sql·mysql·算法
aini_lovee35 分钟前
MATLAB圆锥滚子轴承滚子参数分析程序
人工智能·算法·matlab
_olone39 分钟前
牛客每日一题:显生之宙(Java)
java·开发语言·算法·牛客
嫂子开门我是_我哥1 小时前
心电域泛化研究从0入门系列 | 第二篇:心电信号预处理全攻略——扫清域泛化建模的第一道障碍
人工智能·算法·ecg
wefg11 小时前
【算法】算数基本定理、分解质因数
算法
j_xxx404_1 小时前
力扣困难算法精解:串联所有单词的子串与最小覆盖子串
java·开发语言·c++·算法·leetcode·哈希算法
挠头猴子1 小时前
一个数组去重,两个数组找不同或相同
数据结构·算法
big_rabbit05022 小时前
[算法][力扣167]Two Sum II
算法·leetcode·职场和发展
颜酱2 小时前
二分图核心原理与判定算法
javascript·后端·算法