题意:维护一个数列,每个元素是个二维向量,每次可以在后面加一个元素或者删除一个元素。给定P(x,y),询问对于[l,r]区间内的元素$S_i$,$S_i \times P$的最大值是多少。

首先简单地推出类似斜率优化的式子,那么我们需要在凸包上二分。

学习了一下这份代码http://uoj.ac/submission/69959

使用线段树按下标维护凸包。那么这里有一个问题,如果按照传统的写法,合并一次的复杂度是与$O(区间长度)$的,这样会导致单次插入/删除的时间复杂度变为$O(n)$,是不能接受的。

注意到与普通的线段树不一样的是,这个只会从后面添加元素,所以一个区间只有被填满了以后才需要询问,进而我们可以只在这个区间被填满了以后再合并,但是单次操作的最坏时间复杂度仍是$O(n)$。

考虑是什么样的操作使上面的复杂度变成$O(n)$的呢:在某个较长的区间的右端点附近来回插入删除,每当它满了就会合并一个,删除再插入一个又会满。

于是我们考虑,在这个区间刚满的时候不合并这个区间,而是等到同层的下一个区间也填满的时候再合并这个区间。

这样一旦一个结点花费$O(L)$的时间合并后,至少$O(L)$次操作才会使它再次合并,所以每层单个操作的均摊时间复杂度为$O(1)$,共$\log$层,单个操作的均摊时间复杂度为$O(\log n)$.

但是这样做的话,当一个结点被询问区间完全包含的时候我们并不一定直接使用这个结点的信息,因为它还没有合并。我们只能继续递归它的儿子,直到发现合并过的节点才能返回答案。

那么一共会用到多少个区间的信息呢?我们知道线段树区间查询会落在$O(\log n)$个区间上,由于每层只有最后一个区间没有合并,所以这$O(\log n)$个区间里只有最右边的区间最多会放在$\log$个子区间上,其他的最多放在2个子区间上,所以总共仍然会落在$O(\log n)$个区间上。

这个题需要在凸包上二分,所以单次询问时间复杂度是$O(\log^2 n)$,总时间复杂度$O(n\log^2 n)$,空间复杂度$O(n\log n)$.

【notice】

如果线段树的长度是2的整次幂,可以开头给出的链接那样的写法。如果不是,需要像下面的代码这么写(叶子节点不能合并)。

【code】

http://uoj.ac/submission/77261

存了下斜率后面的点就MLE了。。http://uoj.ac/submission/77384

UOJ#191. 【集训队互测2016】Unknown的更多相关文章

  1. UOJ#191. 【集训队互测2016】Unknown 点分治 分治 整体二分 凸包 计算几何

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ191.html 题目传送门 - UOJ191 题意 自行移步集训队论文2016中罗哲正的论文. 题解 自行 ...

  2. uoj #190. 【集训队互测2016】消失的源代码 提交答案题

    Test 1: 发现是一个字母表的映射 把 \('a' \to 'z'\) 打进去找出映射就好了QAQ . Test 2: 求助 \(dalao\) 得知的点.. 答案是 : \(2016x^2 + ...

  3. 【loj2461】【2018集训队互测Day 1】完美的队列

    #2461. 「2018 集训队互测 Day 1」完美的队列 传送门: https://loj.ac/problem/2461 题解: 直接做可能一次操作加入队列同时会弹出很多数字,无法维护:一个操作 ...

  4. 【2018集训队互测】【XSY3372】取石子

    题目来源:2018集训队互测 Round17 T2 题意: 题解: 显然我是不可能想出来的……但是觉得这题题解太神了就来搬(chao)一下……Orzpyz! 显然不会无解…… 为了方便计算石子个数,在 ...

  5. 洛谷 P4463 - [集训队互测 2012] calc(多项式)

    题面传送门 & 加强版题面传送门 竟然能独立做出 jxd 互测的题(及其加强版),震撼震撼(((故写题解以祭之 首先由于 \(a_1,a_2,\cdots,a_n\) 互不相同,故可以考虑求出 ...

  6. 【uoj#94】【集训队互测2015】胡策的统计(集合幂级数)

    题目传送门:http://uoj.ac/problem/94 这是一道集合幂级数的入门题目.我们先考虑求出每个点集的连通生成子图个数,记为$g_S$,再记$h_S$为点集$S$的生成子图个数,容易发现 ...

  7. 【集训队互测2015】Robot

    题目描述 http://uoj.ac/problem/88 题解 维护两颗线段树,维护最大值和最小值,因为每次只有单点查询,所以可以直接在区间插入线段就可以了. 注意卡常,不要写STL,用链表把同类修 ...

  8. LOJ3069. 「2019 集训队互测 Day 1」整点计数(min_25筛)

    题目链接 https://loj.ac/problem/3069 题解 复数真神奇. 一句话题意:令 \(f(x)\) 表示以原点 \((0, 0)\) 为圆心,半径为 \(x\) 的圆上的整点数量, ...

  9. BZOJ3938 & UOJ88:[集训队互测2015]Robot——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=3938 http://uoj.ac/problem/88 小q有n只机器人,一开始他把机器人放在了一 ...

随机推荐

  1. vs2013运行c语言出现:无法查找或打开 PDB 文件。

    vs2013运行c语言出现:无法查找或打开 PDB 文件.    “ConsoleApplication1.exe”(Win32): 已加载“C:\Users\hp\Documents\Visual ...

  2. tar + find

    将tar 和find 结合,选定目录下指定的文件类型进行打包解压: tar命令用语对文件进行归档以及恢复归档文件,"tar xzvf"命令用于释放<恢复>". ...

  3. PHP glob() 函数

    定义和用法 glob() 函数返回匹配指定模式的文件名或目录. 该函数返回一个包含有匹配文件 / 目录的数组.如果出错返回 false. 语法 glob(pattern,flags) 参数 描述 fi ...

  4. Jmeter 使用笔记之 html 报告扩展(一)

    题记:在用 loadrunner 的时候可以生成一个 HTML 的报告,并且里面包含各种图表,各种详细的数据.而在使用 Jmeter 测试完后并不能直接生成 Html 的报告(无论是用 GUI 还是命 ...

  5. SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-009-带参数的ADVICE2 配置文件为XML

    一. 1.配置文件为xml时则切面类不用写aop的anotation package com.springinaction.springidol; public class Magician impl ...

  6. 点点滴滴-ConfigurationManager.AppSettings

    在写程序的配置文件,里面添加了几个配置,下面是appSettings节点的设置 <appSettings> <add key="StyleFolder" valu ...

  7. RESTFul API 一些文章

    http://www.ibm.com/developerworks/cn/web/1103_chenyan_restapi/index.html

  8. FastJSON学习

    这几天在用FastJSON,发现需要测试一些关键点,包括: 1.是否支持内部类:测试结果是支持,但是需要设置为静态类(static) 2.是否支持继承的自动序列化及反序列化:测试结果是支持 3.缺字段 ...

  9. jni数据问题

    目的: jni中(c++函数)一个 char buf[4] 如何通过env->CallVoidMethod(clazz,method_OnFindCards,jStringParam); 在ap ...

  10. Luogu_1565_牛宫_(最大子矩阵)

    描述 http://www.luogu.org/problem/show?pid=1565 给出一个n*m的矩阵,求最大的且和值为正的子矩阵. 分析 很容易想到的是用前缀和维护,暴力枚举左上角和右下角 ...