首页 > 代码库 > oj--九度oj---1435
oj--九度oj---1435
贪心,每次选择浓度最低的。
注意浮点数比较的问题。
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。