我就做了个1006啊!!!签到题啊!!!三分模板题啊!!!因为用cin输入而不用scanf一顿TLE啊!!!

现学现卖,三分求凸函数极值。

打表发现该函数符合凸函数性质,于是三分。

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;
}