首页 > 其他分享 >一种神秘的均摊方法

一种神秘的均摊方法

时间:2023-05-29 19:48:16浏览次数:43  
标签:神秘 复杂度 节点 我们 构建 方法 均摊 向量

UOJ 191 Unknown

你需要维护一个向量序列,支持如下操作:

  • 在末尾加入一个向量 \((u,v)\)。
  • 删除末尾的向量。
  • 询问 \([l,r]\) 内的向量与 \((x,y)\) 叉积的最大值。

\(n,m\le5e5\)。

这个东西我们首先一眼用李超树或者维护凸包来做全局询问最大值的子问题。

考虑怎么把 \([l,r]\) 内的向量搞出来,显然套一个线段树就可以了。

至此,我们只需要在线段树某一个节点满了之后再构建内层数据结构就可以支持除撤销以外的操作。

为什么不能支持撤销呢?因为我们插入复杂度的正确性实质上是由均摊保证的,当我们在一次开销很大的修改处反复操作就会寄。

通常而言我们会考虑使用非均摊的方式。但是这个题十分的神奇啊。我们可以考虑如下一种神奇的均摊:

对于线段树上的一个节点,我们恰在与它同层的下一个节点被填满时构建它。询问到一个没构建的点的时候就继续向下递归。

我们先考虑一次询问的复杂度。显然我们每层最多有两个点没有构建,而一共只有 \(O(\log n)\) 层,所以我们额外带来的复杂度不超过 \(O(\log n)\)。

再考虑构建操作的复杂度。一个构建好的点要被删除需要至少其长度次删除操作,所以均摊下来是对的。(考虑对每一层的节点分开想更清楚)

这个东西有什么用呢?不知道。等遇到了再来 upd。

标签:神秘,复杂度,节点,我们,构建,方法,均摊,向量
From: https://www.cnblogs.com/PYD1/p/17441452.html

相关文章

  • Echarts 阴影点击事件获得当前柱状图的索引值方法
    Echarts阴影点击事件获得当前柱状图的索引值方法//什么在option外面的变量varclickIndex;option={//配置信息tooltip:{//提示框//提示触发类型:不触发trigger:'none',},//formatter回调函数,formatter:val=>{......
  • 统计学习方法:感知机模型例题
    统计学习方法:感知机模型例题1.感知机学习算法的原始形式2.例题例2.1如图2.2所示的训练数据集,其正实例点是x1=(3,3)T,x2=(4,3)T,负实例点是x3=(1,1)T,试用感知机学习算法的原始形式求感知机模型f(x)=sign(w·x+b)。这里,w=(w(1),w(2))T,x=(x(1),x(2))T。3.线性可分数据集感知机学习......
  • python中测试方法所用的时间—timeit
    方法代码使用timeit方法测试两个函数的运行速度importtimeitstrlist=['Thisisalongstringthatwillnitkeepinmemory.'forninrange(10000)]defuse_join():#使用字符串的join方法连接多个字符串return''.join(strlist)defues_plus():#使用运算符+连接多个字......
  • Edge浏览器获取Cookie和User-Agent方法
    Edge浏览器获取Cookie和User-Agent方法1、在浏览器界面点击F12或Ctrl+Shift+I或;2、找到网络,如界面未显示则可能被隐藏了,点击》或右边得+号,找到即可;3、点击按钮刷新浏览器或F5或Ctrl+R;4、在筛选器点击全部显示;5、在名称里找到界面的网址,一般情况默认第1个;6、在......
  • 清空委托中的所有方法
    通过委托的方法GetInvocationList得到此委托中所挂载的所有的方法一次行删除myDe+=p.SayB;Console.WriteLine(myDe);Delegate[]ar=myDe.GetInvocationList();myDe("Aonaufly");for(inti=0;i<ar.Length;i++){myDe-=ar[i]asDelistener;}......
  • Pandas 加载数据的方法和技巧
    哈喽大家好,我是咸鱼相信小伙伴们在学习python数据分析的过程中或多或少都会听说或者使用过pandaspandas是python的一个拓展库,常用于数据分析今天咸鱼将介绍几个关于pandas导入数据的方法和技巧从URL获取csv数据关于pandas导入csv数据,使用的是下面这个方法pa......
  • python使用hTTP方法
    Python中可以使用requests库来发送HTTP请求,其中包括GET、POST、PUT、DELETE等方法。下面是一个使用requests库发送HTTP请求的示例:importrequests#发送GET请求response=requests.get('ExampleDomain')#发送POST请求data={'key1':'value1','key2':'val......
  • 最常见JS加密保护代码的方法
    当谈到JavaScript(简称JS)代码的保护时,加密是一种常见的策略。加密可以帮助保护你的JS代码,防止未经授权的访问、修改和复制。在本文中,我将向你介绍一些常用的js加密保护方法,并提供一些通俗易懂的示例代码,帮助你入门。压缩和混淆:压缩和混淆是最简单的JS代码保护方法之一。压缩可以减......
  • sas3008刷新fw方法
    说明sas3008卡可以进行it模式和ir模式刷新,it代表纯直通卡,ir可以支持简单的raid功能,raid0\1等,同时必须要记住你要刷新的sas卡的IPaddress,卡上写的有。刷新方法本文介绍,在shellefi下进行fw升级1、将升级文件放在U盘内,开机自检F11选择启动项,不同机器快捷键不同,有的是F10,注意观察自建......
  • 从JDK.8开始接口新增的方法
        ......