首页 > 其他分享 >P5609 [Ynoi2013] 对数据结构的爱

P5609 [Ynoi2013] 对数据结构的爱

时间:2024-03-05 09:56:27浏览次数:18  
标签:势能 log leq 复杂度 Ynoi2013 P5609 Treap 数据结构 fhq

题面传送门

好像搞了个神秘做法。

考虑离线扫描线,用一个 fhq-Treap 维护所有的询问现在长什么样,然后每次操作就整体加 \(A_i\),\(\geq p\) 的减去 \(p\),这个可以分裂之后打整体标记,然后用那个值域相交的 fhq-Treap 合并实现。

然后你发现这样就过了。

构造一下卡不掉,于是考虑给这个东西编一个势能。

设现在 fhq-Treap 维护的东西为 \(a\) 序列,定其势能为 \(\sum\limits_{i=1}^{n-1}{\log(a_{i+1}-a_i)}\),容易发现的是总势能不会超过\(O(m\log V)\),因此我们来考虑减少一个势能的代价。

fhq-Treap 可以在连续段个数乘以 \(\log\) 的时间复杂度内合并两个值域相交的集合,这里连续段指的是合并完之后极长连续的一段满足来自同一边。我们考虑一个最简单的情形,假设其中一个集合为 \(a_1,a_2,a_3\),另一个集合为 \(b_1,b_2\),合并后为 \(a_1,b_1,a_2,b_2,a_3\)。

原来的势能为 \(\log(a_2-a_1)+\log(a_3-a_2)+\log(b_2-b_1)\)。考虑 \(\min(\log(a_2-b_1),\log(b_2-a_2))\leq \log(b_2-a_2)-1\),并且 \(\log(b_1-a_1)\leq\log(a_2-a_1),\log(a_3-b_2)\leq \log(a_3-a_2)\),所以总势能至多增加 \(O(\log n)-1\)。

进一步容易用上面的方法证明,如果最终连续段的个数为 \(S\),则总势能至多增加 \(O(\log V)-\frac{1}{4}S\),所以总复杂度 \(O(n\log n+m\log m\log V)\)。

这玩意的劣势在于其复杂度是 \(O(\log V)\) 而不是 \(O(\log m)\)(说不定能证明势能是 \(O(\log m)\) 的),但是优势在于可以对每个点设不同的 \(p\)。因为常数比较大需要卡卡常。

submission

标签:势能,log,leq,复杂度,Ynoi2013,P5609,Treap,数据结构,fhq
From: https://www.cnblogs.com/275307894a/p/18053317

相关文章

  • [数据结构] 树、森林及二叉树的应用
    树、森林树的存储结构双亲表示法双亲表示法的存储结构#defineMAX_TREE_SIZE100typedefstruct{intdata;intparent;}PTNode;typedefstruct{PTNodenodes[MAX_TREE_SIZE];intn;}PTree;【注】区别树的顺序存储结构与二叉树的顺序存储结......
  • [数据结构] 树与二叉树
    树的基本概念树的定义树是由\(n(n\geq0)\)个节点组成的有限集。当\(n=0\)时,称为空树。任意一棵非空树应满足以下两点:(1)有且仅有一个特定的称为根的节点;(2)当\(n>1\)时,其余节点可分为\(m(m>0)\)个互不相交的有限集\(T_1,T_2,\dots,T_m\),其中每个集合本身又是一棵树,称为......
  • 现有Sketch数据结构|持续更新|菜鸟学习
    写在前面比较简略,偏差之类的理论推导建议去读论文,如果有误麻烦指出套话Sketch的基础是概要数据结构(SummaryDataStructure),它是一种可以以较小的内存消耗来表示和估计大规模数据集的某些属性的数据结构。概要数据结构通过对原始数据进行压缩、聚合或采样,以及使用一些统计方法......
  • 现有Sketch数据结构|持续更新|菜鸟学习
    写在前面比较简略,偏差之类的理论推导建议去读论文,如果有误麻烦指出套话Sketch的基础是概要数据结构(SummaryDataStructure),它是一种可以以较小的内存消耗来表示和估计大规模数据集的某些属性的数据结构。概要数据结构通过对原始数据进行压缩、聚合或采样,以及使用一些统计方法......
  • 现有Sketch数据结构|持续更新|菜鸟学习
    现有Sketch数据结构基本原理写在前面比较简略,偏差之类的理论推导建议去读论文,如果有误麻烦指出套话由GPT生成Sketch的基础是概要数据结构(SummaryDataStructure),它是一种可以以较小的内存消耗来表示和估计大规模数据集的某些属性的数据结构。概要数据结构通过对原始数据进行......
  • 数据结构总纲
    一概述Java集合,也叫作容器,主要是由两大接口派生而来:一个是Collection接口,主要用于存放单一元素;另一个是Map接口,主要用于存放键值对。对于Collection接口,下面又有三个主要的子接口:List、Set和QueueJava集合框架如下图所示: ListArrayList:Object[]数组。Vector:O......
  • 探索数据结构:解锁计算世界的密码
    ✨✨欢迎大家来到贝蒂大讲堂✨✨......
  • 数据结构·基本概念
    DataStructureNotesAuthor:"ebxeax"Version:1.0RefreshDate2020.11.26Description:JustrecordandreviewsomepointsaboutDataStructure.Havemistakesthatpleasecorrectityourself.数据结构的基本概念1.数据2.数据元素:数据的基本单位,一个数据元......
  • 数据结构·查找算法
    查找1.顺序查找一般表(1)代码typedefstruct{ElemType*elem;inttableLen;}SSTable;intsearchSeq(SSTableST,ElemTypekey){ST.elem[e]=key;//设置哨兵for(inti=0;i<ST.tableLen;i++)returni;//存在返回,不存在返回1}(2)设......
  • 数据结构·线性表
    线性表一、逻辑结构和基本操作1.逻辑结构具有相同数据类型的n个数据元素的有限序列,表长n,n=0为空表表头:第一个元素表尾:最后一个元素除第一个元素外,每个元素有且仅有一个直接前驱除最后一个元素外,每个元素有且仅有一个直接后继2.基本操作initList(&L);len(L);locateE......