P3309 [SDOI2014]向量集】的更多相关文章

传送门 达成成就:一人独霸三页提交 自己写的莫名其妙MLE死都不知道怎么回事,照着题解打一直RE一个点最后发现竟然是凸包上一个点求错了--四个半小时就一直用来调代码了-- 那么我们只要维护好这个凸壳,因为这是一个凸函数,所以只要在上面三分找最值即可 于是现在我们需要维护一个资瓷插入的凸壳.考虑线段树,我们发现每一次在线段树上询问的区间必然都是已经把点插满了的.那么我们可以考虑线段树上每一个节点内的所有元素都插入完之后,再构建凸壳,那么显然每个节点只会被构建一次凸包,所以复杂度是\(O(nlog^…
答案一定是在凸壳上的(y>0上凸壳, y<0下凸壳). 线段树维护, 至多N次询问, 每次询问影响O(logN)数量级的线段树结点, 每个结点O(logN)暴力建凸壳, 然后O(logN)三分(二分也是可以的, 不过三分好写, 而且没精度问题....), O(Nlog^2N), 可以AC. -------------------------------------------------------------------------------------------- #include&l…
题目链接 BZOJ3533 题解 我们设询问的向量为\((x_0,y_0)\),参与乘积的向量为\((x,y)\) 则有 \[ \begin{aligned} ans &= x_0x + y_0y \\ y &= -\frac{x_0}{y_0}x + \frac{ans}{y_0} \\ \end{aligned} \] 所以向量集里的向量实际上可以对应到平面上一组点,我们用一个斜率固定的直线去经过这些点,使得斜率最大或最小 当\(y_0 > 0\)时,要求截距最大 当\(y_0…
Description 维护一个向量集合,在线支持以下操作:"A x y (|x|,|y| < =10^8)":加入向量(x,y);" Q x y l r (|x|,|y| < =10^8,1 < =L < =R < =T,其中T为已经加入的向量个数)询问第L个到第R个加入的向量与向量(x,y)的点积的最大值.    集合初始时为空. Input 输入的第一行包含整数N和字符s,分别表示操作数和数据类别:    接下来N行,每行一个操作,格式如上…
Description 维护一个向量集合,在线支持以下操作: "A x y (|x|,|y| < =10^8)":加入向量(x,y); " Q x y l r (|x|,|y| < =10^8,1 < =L < =R < =T,其中T为已经加入的向量个数)询问第L个到第R个加入的向量与向量(x,y)的点积的最大值. 集合初始时为空. Input 输入的第一行包含整数N和字符s,分别表示操作数和数据类别: 接下来N行,每行一个操作,格式如上所述.…
题目描述 维护一个向量集合,在线支持以下操作:"A x y (|x|,|y| < =10^8)":加入向量(x,y);"Q x y l r (|x|,|y| < =10^8,1 < =L < =R < =T,其中T为已经加入的向量个数)":询问第L个到第R个加入的向量与向量(x,y)的点积的最大值.集合初始时为空. 输入 输入的第一行包含整数N和字符s,分别表示操作数和数据类别:接下来N行,每行一个操作,格式如上所述.请注意s≠'E'时…
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=3533 题解: 首先我们把这些向量都平移到原点.这样我们就发现: 对于每次询问所得到的ans一定由凸包上的点做出贡献. 我们按照给出的询问点的纵坐标的正负做出划分: 若为正:那么对答案做出贡献的点一定在上凸壳上 若为负:那么对答案做出贡献的点一定在下凸壳上 所以我们可以分别考虑上下凸壳.不失一般性,我们假设纵坐标为正. 那么这时候答案肯定在上凸壳上 并且这个上凸壳上的所有点和询问点组成的…
题目大意 维护一个向量集合,在线支持以下操作: "A x y (|x|,|y| < =10^8)":加入向量(x,y); "Q x y l r (|x|,|y| < =10^8,1 < =L < =R < =T,其中T为已经加入的向量个数)询问第L个到第R个加入的向量与向量(x,y)的点积的最大值. 集合初始时为空. 分析 题目中相当于给出一堆点\((z,w)\) 询问点\(x,y\) 求\(maximize(ans=xz+yw)\) \(\fr…
题目描述 题解: 码力太差重构之后才$A……$ 首先求向量点积最大很容易想到凸包, 设已知$(x_0,y_0)$,求$(x,y)$满足$(x,y)*(x_0,y_0)>=(x',y')*(x_0,y_0)$ 设$(x,y)*(x_0,y_0)=c$ 那么$x*x_0+y*y_0=c$,$y=\frac(-x_0,y_0)*x+\frac(c,x_0)$ 所以$x_0>0$时,$b$取最大,维护上凸包: $x_0<0$时,$b$取最小,维护下凸包. 其实$x_0=0$不需要单独维护,放到任…
[SDOI2014]向量集 题目描述 维护一个向量集合,在线支持以下操作: - "A x y (|x|,|y| < =10^8)":加入向量(x,y); - " Q x y l r (|x|,|y| < =10^8,1 < =L < =R < =T,其中T为已经加入的向量个数)询问第L个到第R个加入的向量与向量(x,y)的点积的最大值. 集合初始时为空. 输入输出格式 输入格式 输入的第一行包含整数N和字符s,分别表示操作数和数据类别: 接下来N…