BST数据结构题】的更多相关文章

给定BST.改动BST,使得每一个点都是大于他的结点的值之和 关键是这题递归參数怎么设计,每一个点比他大的有两快.一个是右子书(假设有的话),还有一个是祖先里面比他大的,假设直接用这两个的话,找不到递归结构. 应该设计第一个參数是祖先比他大的节点和,第二个參数是子树的和.包含自身. struct Node { int val; Node* left, *right; }; class Solution { void GreaterSumBST(Node* root){ int SubTreeSu…
[Luogu3676]小清新数据结构题(动态点分治) 题面 洛谷 题解 先扯远点,这题我第一次看的时候觉得是一个树链剖分+线段树维护. 做法大概是这样: 我们先以任意一个点为根,把当前点看成是一棵有根树.比方说以\(1\)为根. 那么,在询问以\(p\)为根的时候的答案,我们看看哪些子树发生了变化. 发现真正会产生变化的只有\(1..p\)这条链上的所有点,其它点的贡献和以\(1\)为根时的贡献是一样的. 考虑这条链上的所有点的贡献变成了什么,假设这条链上的所有点分别是\(c_1,c_2...,…
简单数据结构题(from 钟子谦--IOI2018集训队自选题) 试题描述 给一棵 \(n\) 个点的树,点权开始为 \(0\) ,有 \(q\) 次操作,每次操作是选择一个点,把周围一圈点点权 \(+1\)(一个点周围的点为与该点距离为 \(1\) 的点),在该操作后你需要输出当前周围一圈点点权的异或和. 由于输出量较大,设第 \(i\) 个询问输出为 \(ans_i\),你只需要输出 \begin{equation} [\sum^q_{i=1}ans_i \cdot (i^2+i)] \te…
一道简单的数据结构题 发布时间: 2017年6月3日 18:46   最后更新: 2017年6月3日 18:51   时间限制: 1000ms   内存限制: 128M 描述 如果插入“+”和“1”到一个括号序列,我们能得到一个正确的数学表达式,我们就认为这个括号序列是合法的.例如,序列"(())()", "()"和"(()(()))"是合法的,但是")(", "(()"和"(()))("…
目录 LRU缓存 LFU缓存 全O(1)的数据结构 lettcode 上的几道哈希表与链表组合的数据结构题 下面这几道题都要求在O(1)时间内完成每种操作. LRU缓存 LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰.该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰. 做法: 使用先进先出的队列,队尾的…
题面戳我 题意:给一棵树,树上有点权,每次操作为修改一个点的点权,或者是询问以某个点为根时,每棵子树(以每个点为根,就有n棵子树)点权和的平方和. \(n\le2*10^5\),保证答案在long long范围内 sol 我们设\(s_i\)表示以\(p\)为整棵树的根时,以\(i\)为根的子树的点权和.设\(Sum\)表示所有点的点权和,即\(Sum=\sum_{i=1}^{n}val_i\). 所以这道题给出\(p\),就是要你求\(\sum_{i=1}^{n}s_i^2\). 我们先看\(…
Description: 给你一棵树,每次询问以一个点为根时所有子树点权和的平方和 带修改 Hint: \(n\le 2*10^5\) Solution: 这题只要推出式子就很简单了 如果不换根这个平方和树剖直接做就行了 考虑换根的影响了哪些点的贡献 显然只影响了\(1\)到\(u\)的路径上的点 把1到\(u\)这条路径上的点依次标记为\(1,2,3......k\) 我们设\(a_i\)为以1为根时\(i\)的点权和,\(b_i\)为以\(u\)为根的点权和 \(Ans=ans_1-\sum…
SPOJ GSS1 题意:给一个序列以及一些询问,每个是问\([l,r]\)中最大连续子序列和是多少. 思路:这个问题是以下问题的基础. 我们考虑用线段树来解决这个问题. 首先我们来想想如果要求出最大连续子序列和需要什么信息. 对于\([l,m)\)和\([m,r)\)这两个区间,我们需要将它们合并成\([l,r)\)这个区间. 那么我们考虑分治地来解决这个问题.把问题分成三部分: \([l,m)\)中的最大子序列和 \([m,r)\)中的最大子序列和 左端点在\([l,m)\)内,右端点在\(…
传送门 感觉这题做下来心态有点崩……$RMQ$求$LCA$没有树剖快我可以理解为是常数太大……然而我明明用了自以为不会退化的点分然而为什么比会退化的点分跑得反而更慢啊啊啊啊~~~ 先膜一波zsy大佬 讲讲做法.题目的要求是给定一个根$p$,求$\sum _{i=1}^ns_i^2$,其中$s_i$表示子树中的点权和 我们设$sum=\sum _{i=1}^n val_i$,即整棵树的点权和.先考虑一下$\sum _{i=1}^ns_i$怎么求.考虑一下每一个点的贡献,每一个点都会对被计算$dep…
题面 传送门 思路 本来以为这道题可以LCT维护子树信息直接做的,后来发现这样会因为splay形态改变影响子树权值平方和,是splay本身的局限性导致的 所以只能另辟蹊径 首先,我们考虑询问点都在1的情况 考虑一次修改带来的影响: 假设当前节点的值变动量为$delta$,修改节点为$u$ 那么对于所有位于路径$(1,u)$上的节点而言,它们的子树和以及子树平方和都会有改变 设$sum(u)$表示子树点权和,$sumsqr(u)$表示点权和的平方 那么$\forall v \in (1,u)$,$…