奇妙数据结构
A1847225889
在一次次翻车中吸取教训……
展开
-
6714. 【2020.06.10省选模拟】题2 树
题目正解之前做ATCoder见过这样的题,可是没有看懂题解。(不过这也似乎不是题解做法)如果只有加法或者异或,那么这题显然是个水题。随便找一个点作为根。修改某个点的时候,暴力修改它的父亲,在自己身上打标记。询问某个点的时候,结合自身的信息和父亲身上的标记。用专业的话来说,在每个点上维护一个权值,然后在父亲上维护一个置换。用这个权值进行置换,就得到了真正的权值。现在考虑去如何维护这个置换。假如将所有的数拿出来从低位到高位建个TrieTrieTrie,考虑操作之后会变得怎么样。异或显然,加一相原创 2020-06-12 19:47:50 · 246 阅读 · 0 评论 -
6655. 【2020.05.27省选模拟】三国学者
题目有一棵以111为根的树,第iii个节点的权值是aia_iai,a1=La_1=La1=L求从根往叶子有多少个子序列为{L,L−1,..,1}\{L,L-1,..,1\}{L,L−1,..,1}。支持mmm次修改,第iii次将a(i−1)mod n+1a_{(i-1)\mod n+1}a(i−1)modn+1修改成viv_ivin≤1e6,m≤2e6,fai<in\leq 1e6,m\leq 2e6,fa_i<in≤1e6,m≤2e6,fai<i思考历程考虑对一原创 2020-05-29 22:00:31 · 204 阅读 · 0 评论 -
6637. 【GDOI2020.5.16模拟】Three
题目给你一个数列(保证两两数字不相同)。对于一个区间,它的“价值”定义为前三大数的乘积。求所有的长度大于等于333的区间的价值之和。思考历程论自闭是什么感受……当旁边人都切了,都在说这题是水题,但却想不出来的时候……在最后不到一个钟的时间里用我那愚钝至极的大脑想出了个常数极大的做法:按照套路,右端点扫过去,维护每个左端点到这个右端点的信息(最大值、次大值、第三大值)。想象暴力修改是什么样子。将最大值、次大值、第三大值的序列从上到下并列地写在一起。当对一个位置进行修改的时候,找到这个值插原创 2020-05-16 16:16:21 · 264 阅读 · 0 评论 -
100130. 【USACO 2018 January Platinum】鱼池逃脱Cow at Large
题目地图是一棵无根树,pty从某个点出发,每次可以往某一条边走,“逃离”定义为可以在不遇到怪(点或边上相遇)的情况下,到达叶子节点。若干个叶子节点上一开始可以放若干个怪,每次这些怪都可以往某一边走。问对于每个点,最少要放多少怪才能保证抓住pty。n≤70000n \leq 70000n≤70000实际上可以做n≤1000000n\leq 1000000n≤1000000思考历程只知...原创 2020-05-02 21:41:54 · 251 阅读 · 0 评论 -
6487. 【GDOI2020模拟02.29】列强争霸war
题目有个数列,你要维护它,支持区间赋值、区间加一、区间询问出现次数大于等于p∗(r−l+1)p*(r-l+1)p∗(r−l+1)的数有哪些。(题目的那个除以100100100就省掉了哈)思考历程总感觉这题不好直接用数据结构来搞。然后就想到了分块,每个块维护各自的答案。考虑合并两个区间的答案:假如某个数在两个区间的答案中都没有出现过,那么它在两个区间的并的答案中也不会出现;假如都出现...原创 2020-03-01 22:49:28 · 267 阅读 · 0 评论 -
6447. 【GDOI2020模拟01.19】sort
题目正解这题一看也是不能写的题目……用个平衡树来维护。平衡树维护的是一个TrieTrieTrie的序列。每个TrieTrieTrie表示这段区间中所有数都会排序一遍。进行各种操作时,首先会将至多两个节点的TrieTrieTrie分裂。分裂TrieTrieTrie会新增O(lgn)O(\lg n)O(lgn)个节点。然后将整段区间旋到一棵子树内,然后打标记。平衡树和TrieTrieTr...原创 2020-01-28 20:18:09 · 319 阅读 · 0 评论 -
6441. 【GDOI2020模拟01.17】小 ω 维护序列
题目正解其实在比赛时我都没有想到只有第五个操作的问题的不用莫队的方法……好自卑……其实,只要记录一下每个数前面与这个数相同的点的位置。将数列变成个二维平面,而询问就是某个矩形内的点数。容易发现其实第一个操作和第五个操作没有多少区别,就是维护零次方和、一次方和、二次方和、三次方和就够了,本质上的处理方式是一模一样的。接下来就是只能口胡的情节:对于插入和删除操作,简单粗暴地在一开始空好...原创 2020-01-28 18:25:43 · 340 阅读 · 0 评论 -
6358. 【NOIP2019模拟2019.9.15】小ω的仙人掌
题目题目大意给你一串二元组(ai,bi)(a_i,b_i)(ai,bi)的数列。求最小的区间[l,r][l,r][l,r]长度,满足[l,r][l,r][l,r]中的每个二元组选或不选,使得∑ai=w\sum a_i=w∑ai=w且∑bi≤k\sum b_i\leq k∑bi≤k思考历程想了好久,想来想去都是一个背包……最终决定打暴力……正解先说说GMH大爷的神奇解法。...原创 2019-09-17 18:45:22 · 341 阅读 · 0 评论 -
析合树
析合树是一种解决连续段问题的数据结构。比如这样的一个问题:给你一个111到nnn的排列,然后有一堆询问,每次询问区间[l,r][l,r][l,r],问包含[l,r][l,r][l,r]的最小连续段是什么。也就是这题所谓的连续段,就是满足maxl..r−minl..r+1=r−l+1max_{l..r}-min_{l..r}+1=r-l+1maxl..r−minl..r+1=r−l+1的连...原创 2019-09-12 16:54:26 · 498 阅读 · 0 评论 -
[JZOJ4633] 【GDOI2017模拟7.15】萌萌哒
题目描述题目大意给你一个数列,接下来有许多个操作,使得区间[l1,r1][l_1,r_1][l1,r1]和[l2,r2][l_2,r_2][l2,r2]对应的位置染上同样的颜色(使得它们相同)。最后输出9∗10颜色数−19*10^{颜色数-1}9∗10颜色数−1思考历程首先看到这题就自然而然地往数据结构方面想(废话!)接着先想平衡树。既然要将这两个区间变成一样的,那就...原创 2019-05-16 19:02:07 · 185 阅读 · 0 评论