您的位置:首页 > 其它

hdu-4355(三分求极值)

2012-08-09 17:55 253 查看
打表发现题中函数满足凸函数性质,

于是三分。

View Code

#include <iostream>
#include <math.h>
#include <stdio.h>
#define eps 1e-9
using namespace std;
int n;
struct P{
double x,w;
}p[50005];

double Calc(double i){
double S=0.0;
for(int j=0;j<n;j++){
S+=fabs((i-p[j].x)*(i-p[j].x)*(i-p[j].x))*p[j].w;
}
return S;
}
int main(){
int cas,k=0;
scanf("%d",&cas);
while(cas--){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%lf%lf",&p[i].x,&p[i].w);
}
double l,r,mid,midmid,mid_area,midmid_area;
l=-2000000.0,r=2000000.0;
while(l+eps<r){
mid=(l+r)/2;
midmid=(mid+r)/2;
mid_area=Calc(mid);
midmid_area=Calc(midmid);
if(mid_area<=midmid_area) r=midmid;
else l=mid;
}
printf("Case #%d: ",++k);
printf("%.0lf\n",Calc(midmid));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: