[日常训练]curves
Posted Aireen Ye
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[日常训练]curves相关的知识,希望对你有一定的参考价值。
Description
小同学的弟弟小昨天学习了数学中的一元二次函数,但是由于学业不精,他一个晚上都在缠着小问一元二次函数的极值问题,小烦不可耐,于是,想请你帮忙弄个程序来应付小。程序要完成以下任务:
给你个二次函数,记第个为:。
设函数。
请你求出的在区间上的最小值,结果保留位有效数字。
Input
输入文件第一行是一个整数。
接下来行,每行个实数,之间有一个空格分隔。
Output
输出一行一个实数,表示的在区间上的最小值。
Sample Input
23 --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的主要内容,如果未能解决你的问题,请参考以下文章
python基于模型对测试集和训练集的预测概率结果文件可视化模型的校准曲线多个模型的校准曲线(calibration curve)
译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务
集训队日常训练20181110 DIV210 题解及AC代码