您的位置:首页 > 其它

hdu 2570 迷瘴

2011-06-28 20:27 309 查看
很奇怪的一道题,明明是道很简单的贪心,但怎么弄也是WA,于是干脆放了几天后重写

/*
Name: hdu 2570 迷瘴
Author:UnimenSun
Date: 28/06/11 20:19
Description: 简单贪心
*/
/*
解题报告:
简单贪心:注意到数据量不是很大,先把pi非递增排序, 从最小的开始枚举直到遇到大于题中给的浓度停止即可
处理时需注意精度问题
*/
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <iomanip>
using namespace std;
int c, n, v, w;
int pi[110];
int cmp(const void *elem1, const void *elem2)
{
return *(int *)elem1 - *(int *)elem2;
}
int main()
{
int i, j;
int sum, sumv;
cin>>c;
while(c--)
{
memset(pi, 0, sizeof(pi));
sum = 0, sumv = 0;
cin>>n>>v>>w;
for(i=0; i<n; ++i)
cin>>pi[i];
qsort(pi, n, sizeof(int), cmp);
for(i=0; i<n; ++i)
{
if(1.0*(sum+pi[i])/(sumv+1) <= w*1.0)
{
sum += pi[i];
sumv += 1;
}
else
break;
}
if(sum == 0)
cout<<"0 0.00"<<endl;
else
{
cout<<sumv*v<<" "<<fixed<<setprecision(2)<<0.01*sum/sumv<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: