[JOI 2021 Final] とてもたのしい家庭菜園 4

题目描述

给定一个长为 NN 的序列 AiAi​,你可以进行若干次操作:

  • 选定一个区间 [L,R][L,R],让这个区间里的数加 11。

设经过这若干次操作后的序列为 BiBi​,那么你需要让 BiBi​ 满足下面这个要求:

  • 存在一个整数 k∈[1,N]k∈[1,N],满足对于子序列 A1={B1,B2,⋯ ,Bk}A1​={B1​,B2​,⋯,Bk​} 为严格递增序列,对于子序列 A2={Bk,Bk+1,⋯ ,BN}A2​={Bk​,Bk+1​,⋯,BN​} 为严格递减序列。

你想知道最少需要多少次操作才能满足上面这个要求。

输入格式

第一行一个整数 NN 代表序列长度。

第二行 NN 个整数 AiAi​ 代表序列。

输出格式

一行一个整数代表最小操作次数。

样例 #1

样例输入 #1

5
3 2 2 3 1

Copy

样例输出 #1

3

Copy

样例 #2

样例输入 #2

5
9 7 5 3 1

Copy

样例输出 #2

0

Copy

样例 #3

样例输入 #3

2
2021 2021

Copy

样例输出 #3

1

Copy

样例 #4

样例输入 #4

8
12 2 34 85 4 91 29 85

Copy

样例输出 #4

93

Copy

提示

样例 1 解释
  • 对 [2,5][2,5] 进行操作,序列变为 {3,3,3,4,2}{3,3,3,4,2}。
  • 对 [2,3][2,3] 进行操作,序列变为 {3,4,4,4,2}{3,4,4,4,2}。
  • 对 [3,3][3,3] 进行操作,序列变为 {3,4,5,4,2}{3,4,5,4,2}。
样例 2 解释

序列已经满足要求,不需要操作。

样例 3 解释

对区间 [1,1][1,1] 或 [2,2][2,2] 进行操作都可。

数据规模与约定

本题采用捆绑测试。

  • Subtask 1(40 pts):N≤2000N≤2000。
  • Subtask 2(60 pts):无特殊限制。

对于 100%100% 的数据,1≤N≤2×1051≤N≤2×105,1≤Ai≤1091≤Ai​≤109。

说明

翻译自 The 20th Japanese Olympiad in Informatics Final Round A とてもたのしい家庭菜園 4 的英文翻译 Growing Vegetables is Fun 4

#include<bits/stdc++.h>
using namespace std;
long long n,o[1012910],o2[1012910],w=0,x[1012910],y[1012910],z,s=1e15;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>o[i];
        o2[i]=o[i]-o[i-1];        
    }
    for(int i=1;i<=n;i++){
        x[i]=x[i-1];
        if(o2[i]<=0) x[i]+=abs(o2[i])+1;
    }
    for(int i=n;i>=1;i--){
        y[i]=y[i+1];
        if(o2[i]>=0) y[i]+=abs(o2[i])+1;
    }
    for(int i=1;i<=n;i++){
        s=min(s,max(x[i],y[i+1]));
    }
    cout<<s;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值