洛谷 P1182 數列分段

2021-08-09 20:05:09 字數 762 閱讀 6290

這是一道典型的二分答案問題(最大值最小,最小值最大)關鍵是對於細節的處理。

二分的框架:

//l=max,r=sum

while(l<=r)else l=m+1;

}cout

《二分的框架是普遍使用的,關鍵是檢驗函式的設計,此處的檢驗函式的含義為: 是否存在一種合法的劃分,使得每段的最大值都不大於m。

設計好了檢驗函式,就要思考l與r的轉移:若存在這種合法的劃分,說明m偏大,r=m-1;反之,l=m+1.

此處應注意l的初始值為num中的最大值。

#include

#include

#include

#include

using

namespace

std;

int read()

while(c>='0'&&c<='9')

return fh*rv;

}int n,m,num[100005],pre[100005];

bool chk(int x)

}tot++;

if(tot<=m) return

1; else

return

0;}

int main()

r=pre[n];

while(l<=r)else l=m+1;

}cout

fclose(stdin);

return

0;}

洛谷P1182數列分段

對於給定的乙個長度為n的正整數數列a i 現要將其分成m m n 段,並要求每段連續,且每段和的最大值最小。關於最大值最小 例如一數列4 2 4 5 1要分成3段 將其如下分段 4 2 4 5 1 第一段和為6,第2段和為9,第3段和為1,和最大值為9。將其如下分段 4 2 4 5 1 第一段和為4...

洛谷 P1182數列分段Section II

對於給定的乙個長度為n的正整數數列a i 現要將其分成m m n 段,並要求每段連續,且每段和的最大值最小。關於最大值最小 例如一數列4 2 4 5 1要分成3段 將其如下分段 4 2 4 5 1 第一段和為6,第2段和為9,第3段和為1,和最大值為9。將其如下分段 4 2 4 5 1 第一段和為4...

洛谷 P1182 數列分段Section II

題目描述 對於給定的乙個長度為n的正整數數列a i 現要將其分成m m n 段,並要求每段連續,且每段和的最大值最小。關於最大值最小 例如一數列4 2 4 5 1要分成3段 將其如下分段 4 2 4 5 1 第一段和為6,第2段和為9,第3段和為1,和最大值為9。將其如下分段 4 2 4 5 1 第...