hdu4355 Party All the Time----------多校联合六 三分

来源:互联网 发布:七层网络 编辑:程序博客网 时间:2024/05/14 03:53

因为是凸性的,可以在位置这个区间进行三分,比赛的时候用三分写这道题的时候我竟然在位置所对应的标号之间进行三分,脑残了。

#include<iostream>#include<cstdlib>#include<stdio.h>#include<math.h>#include<algorithm>using namespace std;const double eps = 1e-12;struct Node{    double x;    double w;}node[50010];int n;double calc(double xx){    double res=0;    for(int i=1;i<=n;i++)    {        double d=xx-node[i].x;        if(d<0) d*=-1;        res+=d*d*d*node[i].w;    }    return res;}int main(){    int t;    scanf("%d",&t);    int count=1;    while(t--)    {        scanf("%d",&n);        for(int i=1;i<=n;i++)        scanf("%lf%lf",&node[i].x,&node[i].w);        double l=node[1].x;        double r=node[n].x;        double mid,midmid;        double mid_area;        double midmid_area;        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;        }        double g=calc(l);        double h=calc(r);        if(g<h)        printf("Case #%d: %.0lf\n",count++,g);        else        printf("Case #%d: %.0lf\n",count++,h);    }    return 0;}


 

原创粉丝点击