给定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$ 仍然考虑极限情况