hdu 2570 贪心

时间:2023-03-09 02:54:35
hdu 2570 贪心

贪心的经典题型

该死的精度问题,WA了好几次,以后能用乘的绝不用除!!

#include<iostream>
#include<algorithm>
#include<cstdio> using namespace std; int main(){
int n,v,w,k,i;
int p[111],t[111];
cin>>k;
while(k--){
cin>>n>>v>>w;
for(i=0;i<n;i++)
scanf("%d",p+i);
sort(p,p+n);
t[0]=p[0]*100; //保留两位小数点
w*=100;
int d=0,kk=1,flag=0;
for(i=1;i<n;i++){
t[i]=t[i-1]+p[i]*100; //本来是 t[i]=(t[i-1]+p[i]*100)/(kk+1); 一直WA
if(t[i]<=w*(kk+1)){ //改成 w*(kk+1) 就过了
flag=1;
kk=i+1;
d=i;
}
}
if(!flag && t[0]>w)
cout<<"0 0.00"<<endl;
else
printf("%d %.2f\n",kk*v,(double) t[d]/(kk*10000.0)); }
return 0;
}