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

相关推荐
Dlrb12119 小时前
C语言-指针三
c语言·算法·指针·const·命令行参数
Tisfy9 小时前
LeetCode 2540.最小公共值:双指针(O(m+n))
算法·leetcode·题解·双指针
IronMurphy9 小时前
【算法四十七】152. 乘积最大子数组
算法
淘矿人10 小时前
Claude辅助DevOps实践
java·大数据·运维·人工智能·算法·bug·devops
Cosolar10 小时前
万字详解:RAG 向量索引算法与向量数据库架构及实战
数据库·人工智能·算法·数据库架构·milvus
落羽的落羽12 小时前
【算法札记】练习 | Week4
linux·服务器·数据结构·c++·人工智能·算法·动态规划
萑澈12 小时前
算法竞赛入门:C++ STL核心用法与时空复杂度速查手册
数据结构·c++·算法·stl
Godspeed Zhao13 小时前
从零开始学AI16——SVM
算法·机器学习·支持向量机
江屿风13 小时前
C++OJ题经验总结(竞赛)1
开发语言·c++·笔记·算法