P6490 [COCI2010-2011#6] RAZINE(洛谷)

AC记录:ACAC

题目描述

给定一个长度为 n的序列,你可以将某些各减去一个数,使得整个序列严格递增

你需要求出所有减去的数的总和的最小值。

例如:有一个长度为 3的序列 5,5,5;最优方案是 5-2,5-1,5即3,4,5。这样所有减去的数的总和是 2+1=3,为最小值。

输入格式

输入第一行一个整数 n,表示序列的长度。

第二行 n 个整数,描述这个序列。

输出格式

输出一行一个整数,表示总和的最小值。

输入输出样例

输入 #1
3
5
5
5
输出 #1
3
输入 #2
4
5
3
7
5
输出 #2
6

说明/提示

数据规模与约定

对于 100% 的数据,保证1≤n≤100,序列中的数字皆为不大于20000 的正整数。

说明

题目译自 COCI2010-2011 CONTEST #6 T3 RAZINE

CODE

#include <cstdio>
#include <iostream>
#define N 101
using namespace std;

int n, a[N];
typedef long long ll;
ll ans;

int main(){
	scanf("%d", &n);
	for(int i=1; i<=n; i++)
		scanf("%d", &a[i]);
	for(int i=n-1; i>=1; i--)
		if(a[i] >= a[i+1]){
			ans += (a[i] - a[i+1] + 1);
			a[i] = a[i+1] - 1;
		}
	cout << ans << endl;
	return 0;
}
上一篇:Turtle.colormode()使用说明


下一篇:2011 执行操作后的变量值