uva 714 貪心 二分

2021-10-02 16:32:14 字數 991 閱讀 6719

#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;i

// printf("%d ",p[i]);

// if(last[i]) printf("/ ");

// }

// printf("%d",p[m-1]);

// }

int last[maxm]

;// last[i] = 1 iff i is the last book assigned to someone

void

print

(long

long ans)

else

}for

(int i =

0; i < m-

1; i++

)printf

("%d\n"

, p[m-1]

);}int

main()

// 貪心:每次盡量往右劃分求是否可以把輸入序列劃分為2連續值且不超過x,其解定義為p(x);p(x)==1表示可以劃分不超過x,否則不成立

// 二分:求解最佳的x值。

while

(maxnelse maxn=m+1;

}// printf("%d\n",maxn);

print

(maxn);}

return0;

}

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,...

二分貪心 21

題目大概 有n堆積木,積木高度不同,每個小方塊高度相同。問,最少移動多少小方塊,使得這些積木堆高度相等。思路 先求這些積木的平均數,在把所有的高度與平均數的差值加起來,最後除2,就是最少移動的方塊數。感想 這個題有一點很坑人,最後輸出的時候有乙個小點,不注意看看不到。include include ...