oj--九度oj---1435
阿新 • • 發佈:2017-06-25
比較 col esp == int -1 n) style tdi
貪心,每次選擇濃度最低的。
註意浮點數比較的問題。
AC如下:
#include<cstdio> #include<algorithm> #include<cmath> using namespace std; int buf[105]; int main(){ int c; int n,v,w; while(scanf("%d",&c)!=EOF){ while(c--){ scanf("%d %d %d",&n,&v,&w); for(int i=0;i<n;i++) scanf("%d",&buf[i]); sort(buf,buf+n); int sum=0; double P=0; int idx=0; while((((sum*P+1.0*v*buf[idx]/100)/(sum+v))*100-w)<1e-8&&idx<n){ sum+=v; P=((sum-v)*P+1.0*v*buf[idx]/100)/sum; idx++; } if(sum==0){ printf("0 0.00\n"); } else printf("%d %.2f\n",sum,P); } } return 0; }
(((sum*P+1.0*v*buf[idx]/100)/(sum+v))*100)<w-1e-8
上面這行代碼會導致WA,因為相當於<
(((sum*P+1.0*v*buf[idx]/100)/(sum+v))*100-w)<1e-8
改成這樣,AC. 因為相當於<=
oj--九度oj---1435