[日常训练]curves

Posted Aireen Ye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[日常训练]curves相关的知识,希望对你有一定的参考价值。

Description

技术分享同学的弟弟小技术分享昨天学习了数学中的一元二次函数,但是由于学业不精,他一个晚上都在缠着小技术分享问一元二次函数的极值问题,小技术分享烦不可耐,于是,想请你帮忙弄个程序来应付小技术分享。程序要完成以下任务:

给你技术分享个二次函数,记第技术分享个为:技术分享

设函数技术分享

请你求出技术分享的在区间技术分享上的最小值,结果保留技术分享位有效数字。

Input

输入文件第一行是一个整数技术分享
接下来技术分享行,每行技术分享个实数技术分享,之间有一个空格分隔。

Output

输出一行一个实数,表示技术分享的在区间技术分享上的最小值。

Sample Input

2
3 --2 1
2 -4 2

Sample Output

0.686

HINT

技术分享

Solution

本题二分技术分享三分都可过.

二分答案,判断技术分享的定义域的交与技术分享是否有交集.

画图可知,技术分享为单峰函数.三分技术分享值,判技术分享.

注意精度.

#include<cmath>
#include<ctime>
#include<stack>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define eps 1e-10
#define M 1000
#define N 100005
using namespace std;
struct func{
    double a,b,c;
}a[N];
int n;
double l=0.0,r=1000.0,m1,m2;
inline double f(double x){
    double ret=a[1].a*x*x+a[1].b*x+a[1].c;
    for(int i=2;i<=n;++i)
        ret=max(ret,a[i].a*x*x+a[i].b*x+a[i].c);
    return ret;
}
inline void init(){
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
        scanf("%lf%lf%lf",&a[i].a,&a[i].b,&a[i].c);
    while(l+eps<r){
        m1=(r-l)/3.0;m2=l+m1*2.0;m1+=l;
        if(f(m1)>f(m2)) l=m1+eps;
        else r=m2;
    }
    printf("%.3lf\n",f(l));
}
int main(){
    freopen("curves.in","r",stdin);
    freopen("curves.out","w",stdout);
    init();
    fclose(stdin);
    fclose(stdout);
    return 0;
}



以上是关于[日常训练]curves的主要内容,如果未能解决你的问题,请参考以下文章

learning_curve没有绘制超过200万条记录

python基于模型对测试集和训练集的预测概率结果文件可视化模型的校准曲线多个模型的校准曲线(calibration curve)

译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务

集训队日常训练20181110 DIV210 题解及AC代码

输入到precision_recall_curve - predict 或 predict_proba 输出?

UIViewPropertyAnimator 开头有短动画片段