HDU 4390 Number Sequence 二分
系統
1666 0
題目地址: ?
http://acm.hdu.edu.cn/showproblem.php?pid=4390
?
#include<iostream>
#include<vector>
#include<list>
#include<deque>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<ctime>
using namespace std;
typedef long long LL;
const int N=500100;
int x[N];
int n,m;
bool test(int k)
{
int i=1,t=0;
while(i<=n)
{
if(x[i]%k==0)
t+=(x[i])/k;
else
t+=(x[i])/k+1;
i++;
}
if(t<=m) return false;//如果小于等于原有的箱子,說明數字還可以減小,因為減小了數字箱子就會增多
return true;
}
int main()
{
int i;
while(cin>>n>>m&&n+m!=-2)
{
int max1=0;
for(i=1;i<=n;i++)
{
scanf("%d",&x[i]);
if(max1<x[i])
max1=x[i];
}
int l=1,r=max1,mi;
while(r>l)
{
mi=(r+l)/2;
if(test(mi))//這個地方要特別注意,不要弄反了,實在不行的話,兩個都試試
l=mi+1;
else
r=mi;
}
printf("%d\n",r);
}
return 0;
}
?
?
HDU 4390 Number Sequence 二分
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元