這題,小白書上有講,所以當時也沒多想直接二分,分完之後,發現有問題,他說前面的盡量小,這裡就要貪心,
從後面貪心,只要和值不大於二分的值就一直二分,然後發現還是不對,看了別人的,忽略了乙個問題,二分的時候
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,...