/* THE PROGRAM IS MADE BY PYY */
/*----------------------------------------------------------------------------//
Copyright (c) 2012 panyanyany All rights reserved.
URL : http://acm.hdu.edu.cn/showproblem.php?pid=4190
Name : 4190 Distributing Ballot Boxes
Date : Monday, April 02, 2012
Time Stage : 1 hour
Result:
5691701 2012-04-02 19:37:39 Accepted 4190
375MS 2204K 1434 B
C++ pyy
Test Data :
Review :
受华神指导,终于AC了……
//----------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <vector>
#include <algorithm>
#include <iostream>
#include <queue>
using namespace std ;
#define MEM(a, v) memset (a, v, sizeof (a)) // a for address, v for value
#define max(x, y) ((x) > (y) ? (x) : (y))
#define min(x, y) ((x) < (y) ? (x) : (y))
#define INF (0x3f3f3f3f)
#define MAXN (500002)
#define DB /##/
#define LL __int64
int n, b;
int Max, Min, Mid;
int city[MAXN];
int solve()
{
int i, t = b;
for (i = 0; i < n; ++i)
{
int r = city[i] / Mid;
if (city[i] % Mid)
{
++r;
}
t -= r;
}
return t;
}
int main()
{
int i;
while (scanf("%d %d", &n, &b), n != -1 && b != -1)
{
Max = 0;
Min = 1;
for (i = 0; i < n; ++i)
{
scanf("%d", &city[i]);
Max = max(Max, city[i]);
}
Max++;
while (Min < Max)
{
Mid = (Min + Max) / 2;
if (solve() < 0)
Min = Mid + 1;
else // 箱子可以不用完~一开始以为必须分完,结果屡次WA
Max = Mid;
}
printf ("%d\n", Max);
}
return 0;
}
【二分枚举】杭电 hdu 4190 Distributing Ballot Boxes
最新推荐文章于 2025-08-08 22:24:59 发布