您的位置:首页 > 大数据 > 人工智能

poj 2709 Painter

2011-06-18 18:27 190 查看
/*
Name: poj 2709 Painter
Author: UnimenSun
Date: 15/05/2011 14:20
Description: 贪心祼题
*/
/*
解题报告:贪心祼题
1、先处理非gray颜料,从需要量最大的处理,这样才能是最优的
2、处理gray颜料,处理时从最小的三个当中,选最大的处理,每处理完一次,重新排下序,以保证是最小的三个(由于
n的值非常小,所以这样做是可以的)
*/
#include <iostream>
#include <algorithm>
using namespace std;
int n, an[12], gray;
int ans, nMax;
int main()
{
int i;
while(cin>>n && n)
{
//输入
for(i=0; i<n; ++i)
cin>>an[i];
cin>>gray;

//排序
sort(an, an+n);

ans = 0;
nMax = 0;

//先处理非gray的颜料,从最大的开始处理只要最大的满足了就可以,且结果是最优的
while(nMax < an[n-1])
{
ans++;
nMax += 50;
}
//处理gray的颜料
while(1)
{
while(an[2]<nMax && gray>0)
{
an[2]++;
an[1]++;
an[0]++;
gray--;
sort(an, an+n);
}
if(0 == gray)
break;
nMax += 50;
ans++;
}
cout<<ans<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: