hdu 2570 迷瘴

很奇怪的一道题,明明是道很简单的贪心,但怎么弄也是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; }

你可能感兴趣的:(hdu 2570 迷瘴)