我就做了个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; }