2022.5.12 AcWing每日一题
思维题
差分数组
先得到 原始温度数组 和 需求温度数组的差值,即我们需要用差分处理的数组,假设为w。
那么问题是如何利用好,相同的那一段,减少这一段的操作数目。
进行差分之后,连续先等的一段就为0了,保证了算法的最优性。
而差分后的正负值,可以理解为对区间进行加减操作(差分的定义),可以保证算法的正确性。
PS:可以造一组样例试一下,对全0数组按照差分数组进行区间操作,即可得到当前数组,所以对当前数组进行完全相反的逆操作,也可以得到全零数组。
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int w[N];
int n;
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &w[i]);
for (int i = 1; i <= n; i++) {
int t;
scanf("%d", &t);
w[i] -= t;
}
for (int i = n; i > 1; i--) {
w[i] -= w[i - 1];
}
int l = 0, r = 0;
for (int i = 1; i <= n; i++) {
if (w[i] > 0)
l += w[i];
else
r -= w[i];
}
cout << max(l, abs(r)) << endl;
return 0;
}
本文作者:superPG
本文链接:https://www.cnblogs.com/superPG/p/16261146.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步