洛谷習題 數列分段

2022-07-16 19:30:13 字數 556 閱讀 1701

看到題目的問法,就覺得這一般是一道二分答案的問題。然後寫了一下發現寫起來還是挺容易的,然後就全wa了,沙比一般沒有把cnt初始化為1,就少了一段。

然後一修改,就80分了,很懵逼啊那乙個點,看了別人的分析才知道,判斷的時候並不能只是一段一段加,加超了就換一段,可能某個元素大於要判斷的x,加上直接就錯了。

可見二分答案的題目也要好好考慮,畢竟這類題目最關鍵的就在於驗證過程。

1 #include 2

3const

int maxn = 1e5 + 5;4

5int

n, m, num[maxn];

67 inline int check(int

x) 16}17

if (cnt > m) return0;

18else

return1;

19}2021

intmain()

25while (l

30 printf("%d"

, l);

31return0;

32 }

ac**

洛谷1181數列分段Section I

對於給定的乙個長度為n的正整數數列a i 現要將其分成連續的若干段,並且每段和不超過m 可以等於m 問最少能將其分成多少段使得滿足要求。貪心,每次把盡可能大的一段數分成一段。時間複雜度o n var n,m,i,j,ans longint a array 1.100000 of longint be...

洛谷P1181 數列分段

題目描述 對於給定的乙個長度為n的正整數數列a i 現要將其分成連續的若干段,並且每段和不超過m 可以等於m 問最少能將其分成多少段使得滿足要求。輸入輸出格式 輸入格式 輸入檔案divide a.in的第1行包含兩個正整數n,m,表示了數列a i 的長度與每段和的最大值,第2行包含n個空格隔開的非負...

洛谷 P1182 數列分段

這是一道典型的二分答案問題 最大值最小,最小值最大 關鍵是對於細節的處理。二分的框架 l max,r sum while l r else l m 1 cout 二分的框架是普遍使用的,關鍵是檢驗函式的設計,此處的檢驗函式的含義為 是否存在一種合法的劃分,使得每段的最大值都不大於m。設計好了檢驗函式...