1733: 递增数组——C++
Posted _23_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1733: 递增数组——C++相关的知识,希望对你有一定的参考价值。
题目描述
牛牛有一个数组array,牛牛可以每次选择一个连续的区间,让区间的数都加1,他想知道把这个数组变为严格单调递增,最少需要操作多少次?
输入
输入一个整型数组,数组大小<=105,数组元素的值<=109。
输出
返回最少操作次数。
样例输入 Copy
1 2 1
样例输出 Copy
2
提示
把第三个数字+2可以构成1,2,3。
我用的前缀和写的这一题。如果要满足题意,那么这个数组的前缀都大于1就可以了,那么就求出前缀数组后,将所有小于1的数都加n次1,加的次数就是最终要求出来的解。
#include<bits/stdc++.h>
using namespace std;
int main(){
int x;
int a[100010],k=1;
long long num=0;
while(cin>>x){
a[k++]=x-num;
num+=a[k-1];
}
num=0;
for(int i=1;i<k;i++){
//cout<<a[i]<<" ";
if(a[i]<1) num+=fabs(a[i])+1;
}
cout<<num<<endl;
return 0;
}
以上是关于1733: 递增数组——C++的主要内容,如果未能解决你的问题,请参考以下文章