大家好,又见面了,我是你们的朋友全栈君。
最近以各种借口偷懒了,上次BC的题一直也没补,今天才补完第一题,非常好过,可当时就是想不通~
#include<stdio.h>
#include<string.h>
#include<math.h>
#define eps 1e-5
double a[10005],b[10005];
int n;
int bSearch(double begin,double end,double e)
{
double mid, left = begin, right = end;
while(right-left>eps)
{
mid = (left + right)/2;
double sum=0;
for(int i=0;i<n;i++){
if(a[i]<mid) continue;
double r=(a[i]-mid)/a[i]*b[i];
double h=a[i]-mid;
sum+=1.0/3*r*r*h;
}
if(fabs(sum-e)<eps) return mid;
if(sum-e>eps) left = mid;
else right = mid ;
}
return left;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%lf",&a[i]);
for(int i=0;i<n;i++)
scanf("%lf",&b[i]);
double sum=0;
for(int i=0;i<n;i++){
sum+=1.0/3*b[i]*b[i]*a[i];
}
sum/=2;
double k=bSearch(0,5000,sum);
printf("%d\n",(int)k);
}
return 0;
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151015.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...