連續序列分成m段,最大值最小化,二分經典

2021-07-10 06:39:47 字數 442 閱讀 2270

這題比較巧妙地去猜答案,二分,重點是怎麼求m段的連續和是否滿足,這裡用了乙個貪心,

不大於x,就一直把線往後移,大於的話就加一條線。

#include#include#include#include#include#include#include#include#includeusing namespace std;

const int maxn=1e6+10;

const double eps=1e-5;

int a[maxn];

int n,m;

bool is_true(int x)

else

s+=a[i];

}return 1;

}int solve()

{ int x=0,y=0;

for(int i=0;i>n>>m;

for(int i=0;i

最大值最小化

1 目標學會用猜數字 二分 的方法,換個角度來解決問題 2 include3 include 4 include5 const int n 100000 6 7int a n n,m,max 89 void input 1018 19 20bool is part int x 是否能把序列劃分為每個...

最大值最小化 題解

題目描述 把乙個包含 n 個正整數的序列劃分為 m 個連續的子串行 每個正整數恰好屬於乙個序列 設第 i 個序列的各數之和為 s i 你的任務是讓所有 s i 的最大值盡量小。例如序列 1 2 3 2 5 4 劃分成 3 個序列的最優方案為 1 2 3 2 5 4,其中 s 1 s 2 s 3 分別...

最大值最小化(maxmin)

分析 給定序列後,我們可以知道任意劃分的最大值的取值範圍 0,sum 1.n 一種較慢的方法是列舉每種取值情況,根據列舉值進行序列劃分,若劃分的組數大於m,說明沒有滿足條件的劃分情況,需要增加列舉值 如果劃分的組數小於m,說明找到了滿足條件的劃分情況。時間複雜度為o n sum 思路擴充套件 既然找...