私は、題し
第二に、分析
導出式のリファレンスは、ロス・バレーその派生集まります
式の焦点導出、式が導出され、ブロックが容易に考えられます。しかし、揚げ書きやすいです。
1いくつかの場所でオーバーフローに簡単に、そしてセットの無限値の大きさも関連しています。
すべての2が$ R $の境界を決定する場合は、列挙の$ M $の残りの部分の場合には、まだ$器R $以上である気づいている必要があります列挙することはできません。
三、ACコード
1つの#include <ビット/ STDC ++ H> 2 3 使用して 名前空間STDを、 4 の#define MIN(A、B)((A)<(B)?(A):( B)) 5 の#define MAX(A、B)((A)>(B)?(A):( B )) 6のtypedef 長い 長LL。 7 のconst int型 MAXN = 3E5 + 13 。 8 CONST LL INF = 1E15。 9 int型N、M。 10 LLのK。 11 INT [MAXN]。 12 LL和[MAXN]。 13 LLのD [MAXN]。 14 LLのDmin [ 15 ]。 15 16 のint main()の 17 { 18 // freopenは( "INPUT.TXT"、 "R"、STDIN)。 19 一方(scanf関数(" %D%D%I64d "、&N、&M、&K)!= EOF) 20 { 21 フィル(Dminを、Dminが+ 11 、INF)。 22 和[ 0 ] = 0 。 23 のためには、(int型 i = 1 ; iが<= N; iが++ ) 24 { 25 のscanf(" %dの"、および[I])。 26 和[I] =和[I - 1 ] + [I]。 27 D [I] =和[I] - K *(I / M)。 28 } 29 LL ANS = 0 。 30 のDmin [ 0 ] = 0 。 31 のためには、(int型 I = 1 iは++; iがn = < ) 32 { 33 LLのRES = - INF。 34 のために(INT J = 0 ; J <Mであり、j ++ ) 35 { 36 INTF = CEIL(1.0 *((I%のM) - J)/ M)。 37の RES = MAX(RES、D [i]は-のDmin [J] - K・F)。 38 } 39 のDmin [Iの%のM] = MIN(D [i]は、Dminの[I%のM])。 40の ANS = MAX(RES、ANS)。 41 } 42 のprintf(" %LLDする\ n " 、ANS)。 43 } 44 45 46 }