nyoj 680 摘枇杷 二分 貪心

2021-07-23 06:45:39 字數 1232 閱讀 5221

時間限制:

2000 ms  |  記憶體限制:

65535 kb

難度:3 描述

理工學院的

枇杷快熟了,

ok,大家都懂得。而且大家都知道,學校的

枇杷樹都是一列一列的。現在小

y同學已經在籌畫怎麼摘

枇杷了。現在我們假設有一列枇杷樹,而且每棵枇杷樹上枇杷果的數量小

y都已經知道了。

假設現在有

n棵枇杷樹,小

y可以把這

n棵枇杷樹分成

m組,每組枇杷果的數量是這組內每棵枇杷樹上枇杷果數量的和。注意,每組的枇杷樹必須是連續的。(每組最少

1棵樹,最多

n棵樹)。小

y把枇杷往寢室拿的時候是一組一組拿的,所花費的力氣等於這

m組中枇杷果最多的那組枇杷果的數量。現在小

y想花盡量少的力氣把這些枇杷果拿回寢室。

輸入

多組測試資料,以eof結束(<= 100組)

每組測試資料第一行有兩個數n(n <= 1000)和m(1 <=m <= n)

第二行有n個數,分別代表每顆樹上枇杷果的數量

輸出輸出小y同學所花費的最小的力氣,每個結果佔一行。

樣例輸入

3 2

1 2 3

7 51 4 3 1 5 2 4

樣例輸出

3

5

解題思路:這題第一感覺是dp,dp[i][j]表示前i個果子分成j組的最小力氣,然後tle一發,然後想了好久的資料結構去優化它但是想不出來,然後看到討論區的提示,瞬間頓悟,這題完全可以二分答案+貪心策略,因為只需要找到最大的分組即可,完全沒必要用dp。

#include#include#includeusing namespace std;

const int maxn = 1005;

int n,m;

int num[maxn];

bool check(int limit)

sum += num[i];

i++;

} return i > n && cnt <= m;

}int main()

int ans;

while(l <= r)

else l = mid + 1;

} printf("%d\n",ans);

} return 0;

}

nyoj 586 瘋牛(二分 貪心)

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 農夫 john 建造了一座很長的畜欄,它包括n 2 n 100,000 個隔間,這些小隔間依次編號為x1,xn 0 xi 1,000,000,000 但是,john的c 2 c n 頭牛們並不喜歡這種布局,而且幾頭牛放在乙個隔間...

NYOJ 瘋牛問題(二分搜尋 貪心)

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 農夫 john 建造了一座很長的畜欄,它包括n 2 n 100,000 個隔間,這些小隔間依次編號為x1,xn 0 xi 1,000,000,000 但是,john的c 2 c n 頭牛們並不喜歡這種布局,而且幾頭牛放在乙個隔間...

NYOJ 586 瘋牛(貪心 二分)

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 農夫 john 建造了一座很長的畜欄,它包括n 2 n 100,000 個隔間,這些小隔間依次編號為x1,xn 0 xi 1,000,000,000 但是,john的c 2 c n 頭牛們並不喜歡這種布局,而且幾頭牛放在乙個隔間...