程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 4355

HDU 4355

編輯:C++入門知識

三分法

[cpp] 
#include<cstdio> 
#include<string> 
#include<cmath> 
#include<algorithm> 
using namespace std; 
#define N 50010 
double p[N],w[N]; 
int n; 
double cal(double mid){ 
    int i; 
    double ans=0; 
    for(i=1;i<=n;i++){ 
        double err=fabs(mid-p[i]); 
        ans+=w[i]*err*err*err; 
    } 
    return ans; 

int main(){ 
    int t,T; 
    int i; 
    scanf("%d",&T); 
    for(t=1;t<=T;t++){ 
        scanf("%d",&n); 
        for(i=1;i<=n;i++) 
            scanf("%lf %lf",&p[i],&w[i]); 
        double l=-1000000,r=1000000; 
        while(r-l>1e-4){ 
            double ll=(l*2+r)/3; 
            double rr=(l+r*2)/3; 
            double ans1=cal(ll); 
            double ans2=cal(rr); 
            if(ans1>ans2) 
                l=ll; 
            else 
                r=rr; 
        } 
        printf("Case #%d: %.0lf\n",t,cal(l)); 
    } 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved