UVA714給出n個數分成m個部分,使和最大的最小

2021-07-10 17:31:05 字數 726 閱讀 4455

這題,小白書上有講,所以當時也沒多想直接二分,分完之後,發現有問題,他說前面的盡量小,這裡就要貪心,

從後面貪心,只要和值不大於二分的值就一直二分,然後發現還是不對,看了別人的,忽略了乙個問題,二分的時候

x的初始值不能是零,因為我寫的判斷二分的函式比較特殊,所以如果判斷的值小於全部的數也能過,所以,這裡x的

初值注意取全部數的最大值。

#include#include#include#include#include#include#include#include#include#include#include#include#include#define ll long long

using namespace std;

const int maxn=1e4+10;

const double eps=1e-6;

int m,k;

int a[510];

int ca[1110];

bool solve(ll t)

if(tem<0)

return 0;

sum+=a[i];

} return 1;

}int main()

if(k&&tem+a[i]>x)

else

} for(int i=l-1;i>0;i--)

{ if(ca[i]==-1)

cout<<"/ ";

else

cout<

uva 714 貪心 二分

include using namespace std const int maxm 500 int k,m,p maxm bool solve int ans else pre p i return kr k void print int ans else pre p i for int i 0 ...

UVa 714 抄書(貪心 二分)

題意 把乙個包含m個正整數的序列劃分成k個非空的連續子串行,使得每個正整數恰好屬於乙個序列。設第i個序列的各數之和為s i 你的任務是讓所有s i 的最大值盡量小。思路 最大值盡量小 問題。區間的範圍肯定是所有數中最大的乙個至所有數之和,我們可以使用二分法來確定這樣的乙個值x,x盡量小並且每個區間都...

UVA 714 二分最大化最小值

題意 輸入t表示有多個樣例,輸入n,group表示有n個數分為group組使每組和最小 輸出 時注意格式。include include using namespace std define ll long long const int n 500 5 ll a n intvis n ll num,...