ああ...
トピックリンクします。https://www.luogu.org/problem/P5019
まず、それが質問の意味が簡単になります。
長さNの配列を指定し、各動作はマイナス1の範囲を選択することができ、少なくとも完全な配列番号が0N≤100000になることができるどのように多くの操作を尋ねます
アイデア:
まず、最初の数字のために、私たちはD_I倍を超える、少なくともD_1を費やし、その後、各D_I、テンキー以上(または以下)のためにそれのその部分を考慮する必要があり、
私たちは、操作の数に一度に操作することができます。D_I> D_I場合 - D_I - - 1つの操作それは、以前の数よりも大きい1、意味、我々はD_I以上でなければなりません。
もちろん、そこに数と数の間に違いがあり、その差は、いくつかの問題の間隔が発生しますので、この質問の正の解は違いです...
我々は、次に、差は、アレイ内の0 ANSで添加することができるよりも大きい、bで差分配列を維持します。
ACコード:
1の#include <cstdioを> 2の#include <iostreamの> 3 4 使用して 名前空間STDを、 5つの 6 INTの ANS、D [ 100005 ]、B。 7 8 INT メイン(){ 9 INT N。 10 のscanf(" %d個"、&N) 11 のために(int型 i = 1 ; iが<= N; iが++ ){ 12 のscanf(" %dの"、&D [I])を、 13 B = D [i]は- D [I - 1 ]。 14 であれば(B> 0)ANS + = B。 15 } 16 のprintf(" %dの" 、ANS)。 17 リターン 0 ; 18 } 19