POJ 3104 드라이 2 점

http://poj.org/problem?id=3104
제목 의 대의:
n 벌 의 옷 이 있 고 매 벌 에 ai 의 물이 있 으 며 자연 건조 가 분당 1 이 적 고 건조 가 분당 k 가 적다.모두 마 르 는 가장 짧 은 시간 을 구하 다.
생각:
건조 할 때 자연 건조 가 없 도록 주의해 라.
건조 할 때 매 분 (k - 1) 떨 어 지 는 물 로 이해 할 수 있다.
이렇게 옷 한 벌 에 매 분 마다 물이 떨어진다.
이분 매 거 최소 값 이면 됩 니 다.
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=100000+10;
int a[MAXN];
int n,k;

bool ok(int x)
{
	int t=0;
	for(int i=n-1;i>=0;i--)
	{
		if(a[i]<=x)	   break;
		else 	t=t+(a[i]+k-2-x)/(k-1);
		if(t>x)    return false;
	}
	return true;
}

int main()
{
	while(~scanf("%d",&n))
	{		
		for(int i=0;i<n;i++)	
			scanf("%d",&a[i]);

		scanf("%d",&k);
		sort(a,a+n);
		if(k==1)
		{
			printf("%d
",a[n-1]); continue; } int ans; int L=1,R=a[n-1]; while( L <=R ) { int mid=L+(R-L)/2; if(ok(mid)) { R=mid-1; ans=mid; } else L=mid+1; } printf("%d
",ans); } return 0; }

좋은 웹페이지 즐겨찾기