hdu 2570
贪心
对药水浓度从小到大排序,浓度小于等于w的都可以加入,浓度大于w的判断加入后配好的药水浓度是否大于w,若不大于,则继续加入,若大于,则停止操作。
#include<iostream>
#include <algorithm>
using namespace std;
typedef long long int ll;
const int N=1e6+9;
bool cmp(int x,int y){
return x<y;
}
int solve()
{
int n,v,w;
double now=0;//当前配好的药水浓度
int nv=0;//当前药水体积
int a[105];
cin>>n>>v>>w;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
{
double tt=(nv*now+a[i]*v)/(nv+v);
if(a[i]<=w)
{
now=tt;
nv+=v;
}
if(a[i]>w)
{
if(tt<=w)
{
now=tt;
nv+=v;
}
else
{
break;
}
}
}
cout<<nv<<" ";
printf("%.2lf\n",now/100) ;
}
int main()
{
int c;
cin>>c;
while(c--)
{
solve();
}
}