题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2570
题记:典型的贪心题目,把药水浓度排序,把浓度小于等于w%的药水都混合起来,药水浓度大于w%计算混合之后的总浓度,总浓度不大于w%就加入。
#include<bits/stdc++.h>
using namespace std;
int a[1005];
int main(){
int c,n,v,w;
cin>>c;
while(c--){
cin>>n>>v>>w;
float sum=0;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]<=w)
sum+=a[i];
}
sort(a,a+n);
int ans=0,j;
for(j=0;j<n;j++){
if(a[j]<=w)
ans+=v;
else{
sum+=a[j];
if(sum*1.0/(j+1)<=w)
ans+=v;
else{
sum-=a[j];
break;
}
}
}
if(ans==0)
printf("0 0.00\n");
else
printf("%d %.2f\n",ans,sum*0.01/j);
}
return 0;
}