蓝桥杯每日一题:空调(差分)

Farmer John 的 N头奶牛对他们牛棚的室温非常挑剔。

有些奶牛喜欢温度低一些,而有些奶牛则喜欢温度高一些。

Farmer John 的牛棚包含一排 N个牛栏,编号为 1…N,每个牛栏里有一头牛。

第 i� 头奶牛希望她的牛栏中的温度是 pi,而现在她的牛栏中的温度是 ti。

为了确保每头奶牛都感到舒适,Farmer John 安装了一个新的空调系统。

该系统进行控制的方式非常有趣,他可以向系统发送命令,告诉它将一组连续的牛栏内的温度升高或降低 11 个单位——例如「将牛栏 5…85…8 的温度升高 11 个单位」。

一组连续的牛栏最短可以仅包含一个牛栏。

请帮助 Farmer John 求出他需要向新的空调系统发送的命令的最小数量,使得每头奶牛的牛栏都处于其中的奶牛的理想温度。

输入格式

输入的第一行包含 N。

下一行包含 N 个非负整数 p1…pN,用空格分隔。

最后一行包含 N 个非负整数 t1…tN。

输出格式

输出一个整数,为 Farmer John 需要使用的最小指令数量。

数据范围

1≤N≤10^5,
0≤pi,ti≤100000

输入样例:
5
1 5 3 3 4
1 2 2 2 1
输出样例:
5
样例解释

一组最优的 Farmer John 可以使用的指令如下:

初始温度     :1 2 2 2 1
升高牛棚 2..5:1 3 3 3 2
升高牛棚 2..5:1 4 4 4 3
升高牛棚 2..5:1 5 5 5 4
降低牛棚 3..4:1 5 4 4 4
降低牛棚 3..4:1 5 3 3 4

参考代码:

/*
给定数组a,b,进行m次操作使得两数组相等。
p = a-b,d为p的差分数组。
可以理解为将数组p变为全0的操作次数,每次操作为1。
可以转换为差分,对于p的差分数组d每次对于两个数+1,和-1。最后使得数组全为0;
等价于统计d数组中>0的数pos与<0的数neg求出最大值。
d为差分数组每次要同时改变两个数使其一个+1,一个-1。
若正数全部归零,剩余的让负数和n后的数字做交换。
*/
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int N = 1e5+10;
int a[N],b[N];
int n;

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++)
    {
        cin>>b[i];
        a[i] -= b[i];
    }
    for(int i=n;i>0;i--) a[i] -= a[i-1];
    
    int pos = 0,neg = 0;
    for(int i=1;i<=n;i++)
    {
        if(a[i]>0) pos += a[i];
        else neg -= a[i];
    }
    printf("%d\n",max(pos,neg));
    return 0;
}

 

相关推荐

  1. 每日空调

    2024-04-29 12:00:10       24 阅读
  2. 每日(python)

    2024-04-29 12:00:10       61 阅读
  3. 每日(BFS)

    2024-04-29 12:00:10       40 阅读
  4. 每日(dfs)

    2024-04-29 12:00:10       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-29 12:00:10       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-29 12:00:10       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-29 12:00:10       82 阅读
  4. Python语言-面向对象

    2024-04-29 12:00:10       91 阅读

热门阅读

  1. 学习 Rust 的第五天:了解程序的基本控制流程

    2024-04-29 12:00:10       28 阅读
  2. 冷热数据分离方案

    2024-04-29 12:00:10       30 阅读
  3. typedef,#define,asserr,exit函数,free函数

    2024-04-29 12:00:10       27 阅读
  4. 探索Vue 3 reactive()原理及其实现步骤

    2024-04-29 12:00:10       34 阅读
  5. vue 的 keep-alive 详解

    2024-04-29 12:00:10       29 阅读
  6. 算法基础一

    2024-04-29 12:00:10       31 阅读
  7. wps用js宏给文档增加用户名密码验证

    2024-04-29 12:00:10       32 阅读
  8. 每天学习一个Linux命令之ncdu

    2024-04-29 12:00:10       35 阅读
  9. 5.1 基于 Docker 安装 Zookeeper

    2024-04-29 12:00:10       26 阅读
  10. css折叠的导航栏

    2024-04-29 12:00:10       27 阅读
  11. 生成WHL或压缩包安装文件,发布到PYPI

    2024-04-29 12:00:10       26 阅读
  12. 在 Web3 方向有哪些工作,需要掌握哪些知识呢?

    2024-04-29 12:00:10       35 阅读
  13. 力扣经典150题第四十八题:合并区间

    2024-04-29 12:00:10       28 阅读
  14. Qt在已存在的控件上绘图

    2024-04-29 12:00:10       30 阅读