题意:

直接看题面吧

原版:\(n \leq 1e5, q \leq 3e4, TL 5s, ML 256G\)

加强版1:\(n,q \leq 1.5e5, TL 5s, ML 256G\)

加强版2:\(n,q \leq 1.5e5, TL 5s, ML 1G, 强制在线\)(由于空间变大所以严格来说不算加强版……)

思路:

原版

题解

加强版1

首先考虑能否分数规划。

那么要判定
\(\frac{\sum A}{n-1}\geq R\)

变形

\(\sum A\geq R\cdot(n-1)\)

\(\sum A−R\cdot n\geq−R\)

\(\sum (A_i−R)\geq−R\)

接下来先不管强制在线,考虑整体二分。
那么在整体二分的当前轮中,我们对于每个询问有一个二分的\(Mid\)值。
显然我们应该按\(Mid\)从小到大(反着来当然也行)处理。

问题转化为:一个数列,支持全体加正数,和查询区间最大子段和。

先建出线段树,在每个结点我们统计“在结点对应区间内,且以区间中心为一个端点”的所有子段。(不妨称作“单侧子段”)
对应区间长度为\(len\)的结点,单侧子段有\(O(len)\)个。

进而考虑“在结点对应区间内,且过区间中心”的子段(不妨称作“完整子段”)。
易见最优的完整子段由两侧最优的单侧子段拼成。
两侧最优的单侧子段只会变化\(O(len)\)次,故需要考虑的完整子段是\(O(len)\)个。

不止如此,结点里还要统计所有后代的完整子段,于是所有结点统计的完整子段共有\(O(n log^2 n)\)个。

注意到一个子段的和是关于全局增量\(\Delta\)的一次函数,于是不妨对每个结点统计的完整子段求凸包。
观察:由于斜率只有\(O(len)\)种,故每个结点的凸包大小是\(O(len)\),总大小\(O(n log n)\)。

随着\(\Delta\)的增加,我们在每个结点里维护一个扫描线就能查到“在结点对应区间内”的最优子段。
回答询问时会把区间拆成\(O(log n)\)个线段树区间,如何合并?

对每个线段树区间维护“内部最优子段”、“以两侧边界为端点的内部最优子段”,然后类比贪心求最大子段和的方法合并出答案。

单次询问\(O(log n)\),整体二分中有\(O(n log n)\)次询问,时间共\(O(n log^2 n)\)。
空间即凸包大小总和,\(O(n log n)\)。

加强版2

强制在线?
需要抛开扫描线才行。

注意到问题分为两个部分:

1、每个线段树区间的“内部最优子段”

2、每个线段树区间的“以两侧边界为端点的内部最优子段”

每个部分,原先维护的扫描线都会有\(O(n log n)\)个“关键点”,每碰到一个关键点,某个结点的答案就要改变。

由于不能用整体二分,所以不能依赖扫描线来找到每个结点当前的关键点。

不妨在每个结点里同时存储所有后代的关键点,把这些点排序后标明,是自己的关键点,还是左儿子的,还是右儿子的。
以下的“关键点”就指代经过这番扩展后的关键点了。

那么回答询问,先在根节点里二分找到\(\Delta\)对应的关键点,然后用Wavelet Tree的方法,不断把当前结点的关键点编号对应上儿子的关键点编号即可。

Wavelet Tree的方法?很简单,就是对自己的每个关键点,预处理“他是第几个来自左/右儿子的关键点”。

时间不变,空间\(O(n log^2 n)\),但因为空间常数很小所以1G存的下。

代码:

咕咕咕

这东西我能写一年

清橙 A1318 加强版:Almost的更多相关文章

  1. 清橙A1212:剪枝

    题面 清橙 Sol 一种新的树上\(DP\)姿势 从左往右按链\(DP\) 做法: 维护两个栈\(S1\),\(S2\) \(S1\)存当前的链 \(S2\)存分叉点以下要改的链 \(Dfs\),弄一 ...

  2. 清橙A1202&Bzoj2201:彩色圆环

    因为Bzoj是权限题,所以可以去清橙做一下 Sol 突然考了一道这样的题,考场上强行\(yy\)出来了 win下评测Long double爆零TAT 首先肯定是破环为链变成序列问题辣 那么就要求第一个 ...

  3. [清橙A1210]光棱坦克

    [清橙A1210]光棱坦克 题目大意: 平面上放置了\(n(n\le7000)\)个反射装置,光纤将从某个装置出发,在经过一处装置时发生反射,若经过的装置坐标依次为\((x_1,y_1),(x_2,y ...

  4. 清橙A1206.小Z的袜子 && CF 86D(莫队两题)

    清橙A1206.小Z的袜子 && CF 86D(莫队两题) 在网上看了一些别人写的关于莫队算法的介绍,我认为,莫队与其说是一种算法,不如说是一种思想,他通过先分块再排序来优化离线查询问 ...

  5. 洛谷 P1903 BZOJ 2120 清橙 A1274【模板】分块/带修改莫队(数颜色)(周奕超)

    试题来源 2011中国国家集训队命题答辩 题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔 ...

  6. 清橙 A1206 小Z的袜子(莫队算法)

    A1206. 小Z的袜子 时间限制:1.0s   内存限制:512.0MB   总提交次数:1357   AC次数:406   平均分:46.75   将本题分享到:        查看未格式化的试题 ...

  7. 清橙A1363. 水位 - 清华大学2012年信息学优秀高中学子夏令营

    问题描述 有一个正方形的地区,该地区特点鲜明:如果把它等分为N×N个小正方形格子的话,在每个格子内的任意地点的地表高度是相同的,并且是一个0到M之间的整数.正方形地区的外部被无限高的边界包围. 该地区 ...

  8. 清橙 A1120 拦截导弹 -- 动态规划(最长上升子序列)

    题目地址:http://oj.tsinsen.com/A1120 问题描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但 ...

  9. 清橙OJ 1082 查找第K小元素 -- 快速排序

    题目地址:http://oj.tsinsen.com/A1082 问题描述 给定一个大小为n的数组s和一个整数K,请找出数组中的第K小元素. 这是一个补充程序的试题,你需要完成一个函数: int fi ...

随机推荐

  1. type和 #define

    1.#define INT8U unsigned char   :  用INT8U代替unsigned char 2.typedef typedef int size; 此声明定义了一个int的同义字 ...

  2. netstat命令的用法

    netstat用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.利用netstat指令可让你得知整个Linux系统的网络情况.参数:-a或–all 显示 ...

  3. optimize table 删除空洞--MYSQL

    来看看手册中关于 OPTIMIZE 的描述: OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... 如果您已经删除 ...

  4. Linux下Git远程仓库的使用详解

    Git远程仓库Github 提示:Github网站作为远程代码仓库时的操作和本地代码仓库一样的,只是仓库位置不同而已! 准备Git源代码仓库 https://github.com/ 准备经理的文件 D ...

  5. 远程连接Oracle 服务器 解决Oracle查询中文乱码

    Dos方法: 依托于 目录下的文件 使用plsql developer 客户端软件进行连接 需要配置一下: 就是把Dos的客户端配置进来 然后,把服务器端的文件拷贝到你的的机器 并设置TNS_ADMI ...

  6. RAID磁盘阵列的原理

    RAID概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意.磁盘阵列是由很多价格较便宜的磁盘,以硬件(R ...

  7. 验证XML文档的范例代码

    如果想变成自己的,就把这里的xml文档名替换成自己xml文档名 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc. ...

  8. Spring security学习笔记(二)

    对比两种承载认证信息的方式: session vs token token验证方案: session验证方案: session即会话是将用户信息保存在服务端,根据请求携带的session_id,从服务 ...

  9. PHP 通过命令异步执行PHP程序

    通过PHP执行系统命令调用PHP执行程序,让进程挂起到后台执行,不影响用户页面交互. 控制器调用命令,不用等待,后台创建一个进程执行程序. system(“nohup php command.php ...

  10. Hive(9)-自定义函数

    一. 自定义函数分类 当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数. 根据用户自定义函数类别分为以下三种: 1. UDF(User-Defined-Functi ...