@yang12138
2018-07-16T21:24:24.000000Z
字数 1165
阅读 1358
未分类
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1598
题意:
给定两个长度为的数组,定义:
解析:
如果,使.
容易知道对单一的 ,它是直线将的部分与轴对称之后得到的曲线.
如果,只需要特殊考虑即可.
否则存在,对有:
下面简略对此进行证明:
对所有的以从小到大排序,那么对,随着从增大到后,对的贡献就由变成,其中,也就是的斜率变大了.
说明是一个导数单调不递减的函数,且其斜率在处不存在,其最小值在斜率由负变为正的时候取到,注意此时斜率并不存在,也就是在某个处取到最小值.
考虑维护一个对于的线段树和对于的线段树,那么每加入一个新的,求出离散化之后的大小,在线段树上加上二元组,在上加上二元组,线段树维护区间最小值,同样可以在的时间内求出最大的,使,注意这里的可能是负的.
对线段树只要维护区间加、区间最小值、单点查询、区间查询即可.
那么查询答案就是: