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

相关推荐
进击的荆棘1 小时前
优选算法——滑动窗口
c++·算法·leetcode
csdn_aspnet1 小时前
奈飞工厂算法:个性化推荐系统的极限复刻
算法·netflix·奈飞
小白_ysf1 小时前
Vue 中常见的加密方法(对称、非对称、杂凑算法)
前端·vue.js·算法
多米Domi0112 小时前
0x3f 第49天 面向实习的八股背诵第六天 过了一遍JVM的知识点,看了相关视频讲解JVM内存,垃圾清理,买了plus,稍微看了点确定一下方向
jvm·数据结构·python·算法·leetcode
A_nanda11 小时前
c# MOdbus rto读写串口,如何不相互影响
算法·c#·多线程
代码雕刻家12 小时前
2.4.蓝桥杯-分巧克力
算法·蓝桥杯
Ulyanov13 小时前
顶层设计——单脉冲雷达仿真器的灵魂蓝图
python·算法·pyside·仿真系统·单脉冲
智者知已应修善业14 小时前
【查找字符最大下标以*符号分割以**结束】2024-12-24
c语言·c++·经验分享·笔记·算法
91刘仁德14 小时前
c++类和对象(下)
c语言·jvm·c++·经验分享·笔记·算法
diediedei14 小时前
模板编译期类型检查
开发语言·c++·算法