//sb啦,忘记可以有多种答案
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
const double eps=1e-6;
const int N=15009;
struct node{
double x,p;
}p[N];
int n;
double mi=50000,mx;
double cal(double x){
double ans=0;
for(int i=1;i<=n;i++)
ans+=(fabs(x-p[i].x)*p[i].p);
return ans;
// cout<<ans<<endl;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
scanf("%lf%lf",&p[i].x,&p[i].p);
mi=min(mi,p[i].x);
mx=max(mx,p[i].x);
}
while(fabs(mx-mi)>eps){
double lmid=(mi*2+mx)/3;
double rmid=(mi+mx*2)/3;
if(cal(lmid)<cal(rmid)) mx=rmid;
else mi=lmid;
}
printf("%.5f\n",mi);
return 0;
}
sgu114 Telecasting station 三分
寻找最优解:复杂数值计算与迭代算法的应用
最新推荐文章于 2020-03-28 22:23:05 发布
本文深入探讨了数值计算中利用迭代算法求解问题的方法,通过实例展示了如何通过逐步逼近来找到最优解。从算法设计到实际应用,文章详细解释了关键步骤和注意事项,旨在为读者提供解决复杂数学问题的实用技巧。
9568

被折叠的 条评论
为什么被折叠?



