二次函数

简单三分

柔情痞子 提交于 2020-01-25 00:19:08
题目: Josephina is a clever girl and addicted to Machine Learning recently. She pays much attention to a method called Linear Discriminant Analysis, which has many interesting properties. In order to test the algorithm’s efficiency, she collects many datasets. What’s more, each data is divided into two parts: training data and test data. She gets the parameters of the model on training data and test the model on test data. To her surprise, she finds each dataset’s test error curve is just a parabolic curve. A parabolic curve corresponds to a quadratic function. In mathematics, a quadratic

A

丶灬走出姿态 提交于 2019-12-04 10:30:06
给定N个形如$f_i(x)=a_i*x^2+b_i*x$的二次函数 有Q次询问每次给出一个$x$,求$max{f_i(x)}$ 再菜也只是菜这么一两天了 过了这几天,奥赛就与我无关了 可能退役之前最后一篇? 观察到二次函数没有c 二次函数可以转化成$x(a*x+b)$ 就可以分类讨论了,分成$x>0,x<0$ 只讨论$>0$($<0$同理) $>0$时按照$a$升序,$b$升序排序 排序后,对于每一个值域预处理,回答时$O1$ 假设值域上两个值$x,x+1$ $x$取到最大值为$mxid$,那么$x+1$取到最大值一定大于等于$mxid$ 证明 $(x+1)*a+b=x*a+b+a$ $a$排序后是单调递增的 因为$mxid$之前a都$<=a_{mxid}$,本来就$<=mxid$现在增加量$<=mxid$ 所以可以链表乱搞 复杂度$O(值域ln(值域))$ 复杂度证明 经过去重之后 假设最后一个值为$a_{mxid},b_{mxid}$ 极限情况就是一直跳$a_1$,最大是$a_1$ 会跳多少次解不等式 $a_{lst}*x*x+b_{lst}*x>a_1*x*x+b_1*x$ 假设x>0 $a_{lst}*x+b_{lst}>a_1*x+b_1$ 于是有了 $x>\frac{b_1-b_{lst}}{a_{lst}-a_1}$ 然后设分母为$delta_a$ 仍然考虑极限情况

曲线

感情迁移 提交于 2019-12-02 19:19:23
https://loj.ac/problem/10013 题目描述   定义 \(F(x)=max(Si(x))\) ,给出 \(n\) 个二次函数 \(S_i = ax^2 + bx + c\) ,求 \(F(x)\) 的最小值 思路   由于 \(S(x)\) 要么是开口向上的二次函数,要么是单调增的一次函数,要么是常数,所以 \(F(x)\) 也一定是一个单调函数,并且不是很显然的能用三分求解(我也不是特别知道为什么),就主要讲一下如何用三分。我们现在有一个已知区间 \([ L , R ]\) ,那么 \(Lmid = L + ( R - L ) / 3,Rmid = R - ( R - L ) / 3\) 。我们以开口向上的二次函数为例,如果 \(f(Lmid)< f(Rmid)\) ,那么我们可以证明 \(Lmid\) 和最优点在 \(Rmid\) 的同侧,即区间可以缩小至 \([ L , Rmid ]\) 。由此就可以进行三分。 \(\qquad\color{red}{三分的要求必须是严格的单调函数,如果存在一段f(Lmid)= f(Rmid),就无法进行三分了}\) 代码 #include <bits/stdc++.h> using namespace std; const int MAXN=101000; double a[MAXN],b[MAXN],c[MAXN]