首页 > 其他分享 >cf 数据结构杂题

cf 数据结构杂题

时间:2023-05-01 16:33:16浏览次数:36  
标签:deque ver int root cf version 数据结构 杂题 op

rand 一些题目做一下,持续更新

平衡树

gym101261A Persistent Deque

You need to process the following queries:

  • B v x — Add x to the beginning of the deque with version v.

  • E v x — Add x to the end of the deque with version v.

  • < v — Remove the first element of the deque with version v.

  • > v — Remove the last element of the deque with version v.

Assume version 0 is an empty deque. Every query creates a new version of the deque.

All queries are online, that means you should flush the output before reading the input for the following query. Use fflush(stdout) for C/C++.

\(1\le Q\le 3e5\)

题意 ``` 让你实现一个可持久化的双端队列 ```
solution ``` 直接上可持久化平衡树;或者按照手写deque的方法(维护队首队尾指针),将数组改成可持久化数组 ```
code ``` persistent_fhqTreap T; void AC() { #undef endl //题目要求在线,每次输出刷新缓冲区 int q; cin >> q; char op; int ver, p, x; for (int i = 1; i <= q; ++i) { cin >> op >> ver; T.root[i] = T.root[ver]; int siz = T.sz[T.root[ver]]; if (op == 'B') { cin >> x; T.ins(T.root[i], 1, x); } else if (op == 'E') { cin >> x; T.ins(T.root[i], siz + 1, x); } else if (op == '<') { cout << T.del(T.root[i], 1) << endl; } else { cout << T.del(T.root[i], siz) << endl; } } } ```

标签:deque,ver,int,root,cf,version,数据结构,杂题,op
From: https://www.cnblogs.com/JU5T4FUN/p/17366659.html

相关文章

  • 整理一些学过的数据结构和算法
    匆匆忙忙中学了很多算法,但基本都是打个板子就跑路了,有些算法有个人比较深入和独特的见解,但大部分,只是实现例题的需求,对算法的作用似懂非懂,所以写篇博客整理一下。无旋平衡树(treap)高级数据结构:树和堆可以允许的操作:插入,删除,查询某数排名,查询某排名的树(第K大),求某数的前驱,后驱(X......
  • 5471: 数据结构实验--图的最小代价生成树 prim
    描述  求带权无向图的最小代价生成树。    输入  输入数据为多组,每组数据包含多行,第一行为2个整数n,e,n为图的顶点数,e为边数,接下来是e行,每行3个整数,前两个整数是一个顶点对,代表一条边所依附的两个顶点,第3个整数是边的权值。所有值不超过20。  输出......
  • 数据结构-莫队二次离线
    莫队二次离线问题:给一个序列a,每次询问区间里面有几个逆序对刚刚又睡了半小时,终于睡醒了\(n,m\leq1e5\)实现询问首先想一想莫队:对于初始询问区间[l,r],将右指针r扩展到r+1,对于答案的贡献就是[l,r]里面大于a[r+1]的数量,写成数学公式就是\(\sum_{i=l}^r(a[i]>a[r+1])\)然后可......
  • CF1624G 题解
    前言题目传送门!更好的阅读体验?比较好玩的二进制题目。思路答案最小,也就是说较高位要尽可能小。所以很容易想到从最高位开始枚举。第\(i\)位为\(0\),等价于选出的所有边的第\(i\)位都为\(0\)。同时,由于我们是贪心,如果之前枚举过的第\(j\)位可以是\(0\),那么这两个条件......
  • CF 1709E XOR Tree(树上启发式合并)
    题目链接:https://codeforces.com/contest/1709/problem/E解题思路:定义sum(x,y)为x→y路径上的点的异或和,dx 为x→root路径上的点的异或和。对于一个点权树,sum(x,y)=dx ^dy ^vallca(x,y)。考虑修改一个点,可以将它改为一个很大的2为底数的幂,则经过此点的所有的不合......
  • 【数据结构】栈
    1 前言这节我们来看看计算机中的常见的栈结构。2 栈定义栈是一个后进先出(LastInFistOut,LIFO)的线性表,它要求只在表尾进行删除和插入操作。所谓的栈,其实就是一个特殊的线性表(顺序表、链表),但是它在操作上有一些特殊的要求和限制:栈的元素必须“后进先出”栈的操作只能......
  • 【题解】CF44G Shooting Gallery
    题目大意给定\(n\)个三维空间的平面,由高度\(z\)、\(x\)的范围\([xl,xr]\)和\(y\)的范围\([yl,yr]\)来表示。有\(m\)次射击,每次射击点\((x,y)\),摧毁包含此点的\(z\)值最小的平面,输出此平面编号,若摧毁不了任何平面,输出\(0\)。题解点查平面不好做,于是可以转化为平面查点,先将平面按......
  • 数据结构与算法复习--(2)
    算法和算法分析算法的定义对特定问题求解方法和步骤的一种描述,它是指令的有限序列。其中每个指令表示一个或多个操作。算法的描述自然语言:英语、中文流程图:传统流程图、NS流程图伪代码:类语言:类C语言程序代码:C语言程序、Java语言程序算法与程序算法是解决问题的一......
  • 【数据结构】链式型存储结构-双向链表
    1 前言只要大家坐过火车,对于双向链表的理解就相当简单。双向链表就是在单链表的基础之上,为每一个结点增加了它的前继结点,我们来看看。2 双向链表双向链表的定义如下:typedefstructDaulNode{ElemTypedata;structDaulNode*prior;//前驱结点structDa......
  • CF521D Shop
    CF521DShop注意到选定的操作数可以少于\(m\),因此所有对乘积有负贡献的操作直接扔掉(在本题中,只有满足\(b_i<a_i\)的赋值操作对乘积是负贡献的)。假设我们框定了选择的操作集合,如何决定顺序?先做所有赋值操作,再做所有加操作,再做所有乘操作是最优的,而每种类型操作内部的顺序无......