la 5009 - Error Curves(三分)
2014-04-27 16:45
295 查看
la 5009 - Error Curves
单峰函数用三分
#include<stdio.h>
#include<string.h>
#include<math.h>
#define MAXN 10005
const double eps=1e-9;
int a[MAXN],b[MAXN],c[MAXN];
int n;
double max(double a,double b) {return a>b?a:b;}
double f(double x)
{
double ans=a[0]*x*x+b[0]*x+c[0];
for(int i=1;i<n;i++)
{
ans=max(ans,a[i]*x*x+b[i]*x+c[i]);
}
return ans;
}
int main()
{
int cas;
scanf("%d",&cas);
while(cas--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d%d%d",&a[i],&b[i],&c[i]);
double l=0,r=1000;
while(l+eps<r)
{
double m1=(l+r)/2;
double m2=(m1+r)/2;
if(f(m1)+eps<f(m2)) r=m2;
else l=m1;
}
printf("%.4lf\n",f(l));
}
return 0;
}
单峰函数用三分
#include<stdio.h>
#include<string.h>
#include<math.h>
#define MAXN 10005
const double eps=1e-9;
int a[MAXN],b[MAXN],c[MAXN];
int n;
double max(double a,double b) {return a>b?a:b;}
double f(double x)
{
double ans=a[0]*x*x+b[0]*x+c[0];
for(int i=1;i<n;i++)
{
ans=max(ans,a[i]*x*x+b[i]*x+c[i]);
}
return ans;
}
int main()
{
int cas;
scanf("%d",&cas);
while(cas--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d%d%d",&a[i],&b[i],&c[i]);
double l=0,r=1000;
while(l+eps<r)
{
double m1=(l+r)/2;
double m2=(m1+r)/2;
if(f(m1)+eps<f(m2)) r=m2;
else l=m1;
}
printf("%.4lf\n",f(l));
}
return 0;
}
相关文章推荐
- LA 5009 - Error Curves(三分)
- LA 5009 (HDU 3714) Error Curves (三分)
- UVALive - 5009 Error Curves (三分)
- Error Curves(三分)uvalive 5009 求下凸 (最大值的最小值)
- LA 5009 三分
- LA 5009 (三分法求极值) Error Curves
- UVALive - 5009 Error Curves (三分法)
- LA 5009 (HDU 3714) Error Curves 翻译
- 三分 Error Curves
- LA 4986 三分
- HDU 3714 Error Curves(三分)
- UVALive5009(Error Curves)-三分求极值
- 数学-三分->HDU 3714 Error Curves
- POJ 3714 Error Curves(三分)
- uvalive 5009 Error Curves
- hdu 3714 Error Curves(三分)
- nyoj 1029/hdu 3714 Error Curves 三分
- 【单峰函数,三分搜索算法(Ternary_Search)】UVa 1476 - Error Curves
- uvalive5009(三分)
- 三分搜索--hdu3714 Error Curves