首页 > 其他分享 >2.1 不会有人数据结构比我还菜吧?

2.1 不会有人数据结构比我还菜吧?

时间:2024-02-05 23:11:52浏览次数:25  
标签:有人 log 后缀 然后 节点 操作 2.1 数据结构 考虑

记录三道自己菜死了的与根号有关的题。其中每道题都有 polylog 解法。

题目名称太长了,就不放了。

CF1017G The Tree

根号做法:考虑操作分块,然后建虚树。建出虚树之后我们就发现很好处理了。同样的,处理每一个块结束后的真实形态,也可以借助这个虚树。总的来说,需要暴力维护一下每个虚树点上的真实颜色,每条边上的黑白点数,以及对非虚树点的清空&染色的 tag。

但是这题也有 polylog 做法。

双 log 做法:先不考虑2操作,每次一操作给该点加一,那么一个点是黑色当且仅当存在一个后缀使得其 sum 等于长度。一个常见的 trick:全体初始都减一,就转化为最大后缀 >=0 了。然后考虑2操作:我们实际上只需要清空子树,然后再更改一下 \(u\) 的权值,让根到 \(u\) 的最大后缀恰好为 \(-1\)。这个是容易的,查一下最大后缀然后单点修改即可。

LG8264 TEST_100

首先考虑分块,然后处理出每一个值在经过这个块后会变成什么。考虑像第二分块一样,用并查集维护值的变换。我们从左往右处理,每次都是将 \(>t\) 的减 \(t\),\(\le t\) 的取反然后 \(+t\)。然后考虑我们每次希望有一个势能的均摊。令最小值为 \(A\),最大值为 \(B\),如果全部在一边那么直接打 tag,否则我们每次都能将值域减少 \(\min(B-t,t-A)\)。实际上我们也确实能做到这样的均摊,假如 \(B-t<t-A\) 那么我们就将 \(t,\dots,B\) 与 \(t,\dots,2t-B\) 合并,否则同理,然后再打全局 tag。就好了。

集训队互测2018 完美的队列

首先这题就是要求出每一个操作在什么时候带来的影响完全消失。

考虑一种很厉害的做法:考虑将一次操作 \((l,r,x)\) 拆成线段树上的 \(O(\log n)\) 个整区间。然后我们就只需要对每个线段树整区间上的一些操作求解。

然后考虑会对一个整区间上的产生影响的,要么来源于祖先节点的操作,要么来源于子树节点的操作,要么来源于自身。注意到后两者的总和加起来是 \(O(n\log n)\) 的!于是我们将后两者的时间拉出来,祖先节点的操作带来的影响,我们只需要知道在相邻两个时间之间祖先节点的操作次数,于是 BIT 维护关于时间的操作次数即可。然后我们对这些时间做双指针,并用另一棵维护下标的线段树,维护每个节点的 \(a'_i\) 即可。所以总复杂度 \(O(n\log ^2 n)\)。

标签:有人,log,后缀,然后,节点,操作,2.1,数据结构,考虑
From: https://www.cnblogs.com/TetrisCandy/p/18008986

相关文章

  • DPDK-22.11.2 [六] RSS receive side scaling 网卡分流机制
    这个的作用就是为了提高性能。当分析网络数据时,可以为网口提供多个接收队列,每个cpu处理一个队列。如果每条队列是独立的,那么就可以很好的并发。这里有两个问题,一个是数据需要平均的分配到每个队列;二是同一组数据需要分配到同一个队列。rss就是这个作用,可以设定以ip进行区分,或......
  • 数据结构(一)单链表---以题为例
    实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第 k 个插入的数后面的数;在第 k 个插入的数后插入一个数。现在要对该链表进行 M 次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作......
  • 数据结构之——数组
    数组数据结构的基本类型之一,它可以构成其他数据结构,如栈、队列、哈希表、树、图、堆、矩阵、张量。数组在内存中的存储方式为一片连续的内存空间,其基本操作与其他数据结构一致,即所谓的增删改查。废话不多说,上代码加以理解。Java类型实现classarray{publicstaticvoid......
  • redis有5种数据结构
    redis有5种数据结构,分别如下:5种数据结构python语言对5种数据结构的增删改查全局函数1|0redis连接importredispool=redis.ConnectionPool(host='localhost',port=6379,decode_responses=True)r=redis.Redis(connection_pool=pool)redis取出的结果默认是字节,可......
  • Python数据结构与算法06——树与树算法
    二叉树classNode(object):def__init__(self,val,lchild=None,rchild=None):self.val=valself.lchild=lchildself.rchild=rchildclassTree(object):def__init__(self):self.root=Nonedefadd(self,item):no......
  • HDMI2.1之eARC简介-Dolby Atmos和DTS:X
    eARCeARC代表“enhancedAudioReturnChannel”(增强型音频返回通道),是一种用于音频传输的高级技术标准。它是HDMI(HighDefinitionMultimediaInterface,高清晰度多媒体接口)规范的一部分,旨在提供更高质量的音频传输和更多的功能。HDMI论坛提出HDMI2.1版时,一并新增的功能,其全名是E......
  • [数据结构] 链表
    写在前面菜鸡博主开始复习了,先从数据结构开始吧(其实是每天复习高数太累了)1.单链表单链表是线性表的链式存储,是指通过一组任意的存储单元来存储线性表中的数据元素。对每个链表节点,除了存放元素自身的信息之外,还需要存放一个指向其后继的指针(如下图所示)单链表的节点可以用如......
  • 2.1学习进度
    有向无环图有向:有方向无环:没有闭环DAG:有方向没有形成闭环的一个执行流程图action:执行链条的开关,返回值不是rdd算子一个action会产生一个job(一个应用程序内的子任务),每个job会产生一个DAG图一个action=一个DAG=一个JOB一个application中,每一个job内含一个DAG,同时每一个job又是由......
  • 20240201-高级数据结构随记
    intmain(){intn;cin>>n;for(inti=1;i<=n;i++){scanf("%d",&a[i]);sum[i]=sum[i-1]+a[i];}intmn=sum[0];for(inti=1;i<=n;i++){//枚举右端点if(sum[i]-mn>ans)ans=sum[i]-mn;......
  • 20240201-高级数据结构总结
    待办:倍增并查集线段树合并set逆序对树动态开点线段树套用模版#include<bits/stdc++.h>usingnamespacestd;#defineM100005#definelllonglongstructnode{ intL,R,cnt,vis;}tree[400005];inta[M],b[M],c[M],f[M];voidbuild(intp,intl,intr){ tre......