- 2024-11-16DSU on Tree
OIWIKI何为DSUonTree其实是一个CF算法标签即为树上启发式合并,既然为启发式合并,必然会有一些人类智慧的存在(相当于卡常)。DSUonTreeStep1.找出重儿子这里就是重链剖分中的定义就行了。Step2.暴力对于所有的儿子,我们直接先按照题意暴力一遍。对于所有的轻儿子,我
- 2024-11-14树上启发式合并学习笔记+杂题
图论系列:前言:欲买桂花同载酒,终不似,少年游。相关题单:戳我一.树上启发式合并前置知识:树的重儿子。1.引入启发式算法是基于人类的经验和直观感觉,对一些算法的优化。(其实就是感觉是对的就是对的),例如并查集的启发式合并,将小集合合并到大集合中。因为在路径压缩的时候,大集合的根
- 2024-10-30动态规划题解报告
Findacar注意到矩阵本质上是一个分形,即每次向右下复制当前矩阵,证明考虑归纳法。由此可以知道一个比较好的性质\(a_{i+k,j+k}=a_{i,j}\)其中\(k=2^n\),由于每次是复制加倍,所以横纵坐标都会加上一个\(2^n\),且每次增加的二次幂一定是横纵坐标二进制减一后没有的那一位(证明考虑
- 2024-10-29[题解][CSP-S2024]擂台游戏
题意[CSP-S2024]擂台游戏(民间数据)题目描述小S想要举办一场擂台游戏,如果共有\(2^k\)名选手参加,那么游戏分为\(k\)轮进行:第一轮编号为\(1,2\)的选手进行一次对局,编号为\(3,4\)的选手进行一次对局,以此类推,编号为\(2^k-1,2^k\)的选手进行一次对局。第二轮在
- 2024-10-27P11234 [CSP-S 2024] 擂台游戏 题解
P11234[CSP-S2024]擂台游戏题解前言作者在考场上用了约1h把前三道题做完了,然后用了约半小时想了带\(\log\)的做法,但是我决定放手一搏去想线性的做法,于是又想了有1h之后觉得想到了正解,然后我就一直写到了考试结束,但是最终没有调出来遗憾离场,因此写个题解来纪念一下。
- 2024-10-25CSP模拟 Town
题意有一棵树,将它的一些边断开,使得每个连通块的点权异或和为给定的一个数\(x\),求方案数。原题好像是牛客的NC200547,没有账号看不到题,不确定。思路朴素的想法是用f[i][j]记录“\(i\)子树中与\(i\)相连的连通块异或和为\(j\)(\(i\)子树内其他连通块异或和为\(x\))”的方
- 2024-10-24线段树初步理解
今天ZRtes爆零咯,就不在tes里写了引言:以前一直只会用线段树2,线段树也是一直当做工具使用,一切线段树的科技除了线段树分治基本都不会,因此特作此文记之线段树的lazytag与pushdown为了保证时间复杂度,线段树在做区间修改的时候引入了lazytag的概念,目的是为了节省没必要的时
- 2024-10-15数据结构(c语言版)-为什么想起来很简单的代码,写起来那么费劲呢?
作为一个代码小垃圾,三行五行的基本语句都写不出来。课上,双链表的插入写起来都那么费劲,真糟糕。思路很简单,为什么代码不会写?需要对基本语句再熟悉。为什么会考虑不到保存指针(指针覆盖)的情况?因为在思考数据元素插入链表问题时,使用的是全知视角(上帝视角),“偷看答案”了。但是,对于每
- 2024-10-14「模拟赛」CSP-S 模拟 11(T2 超详细)
比赛链接A.玩水(water)签到。发现如果要找两条路径的话,能找到的充要条件是存在一个点的上方和左方的字母相同。(即使两条走过的点截然不同的路径也符合,这时终点会成为这个点)。即存在一个位置\((i,j)\)使得\(s_{i-1,j}=s_{i,j-1}\),我们称位置\((i,j)\)是好位置。扩展到三
- 2024-10-05P10418 [蓝桥杯 2023 国 A] 相连的边 题解
一个比较有趣的树形DP,情况比较多。【题目简述】给定一棵树,求三条相连的边,其边权之和最大。【思路】以X代表当前节点,S表示儿子,G表示孙子,P表示父节点。首先把树建出来,在以下图中,我们模拟二号点的DP过程,考虑以下几种情况:有一条边指向父节点时FG(FatherGrandson):一
- 2024-09-09树链剖分
由于是在树上搞的ds所以考察数据结构本身性质偏多,需大力注重细节。思想考虑将一颗树的链划分成若干个区间进行维护。这种划分方式叫做剖分。约束一颗有根树(有时要求换根但不是真正换根)每个点恰好包含在一条剖出的链中(若被多条链同时包含则需要同时维护多条链,修改多余
- 2024-09-03矿泉水能生儿子被抢脱销,消费市场开始玄学当道了…?
前几年,消费市场流行一个非常自信的说法,大概意思是,你看,中国这些崛起的新消费品牌,用三四年的时间,走完了国际品牌百年的路。这些品牌里,有卖化妆品的,有卖方便速食的,有卖雪糕的……眼看着各行各业各品类,新国货平替在消费市场杀疯了。单品类年销售额破10个小目标的神话那是一个接一个。但
- 2024-08-20lg树上操作
lg树上操作P3258树上差分P1600[NOIP2016]天天爱跑步分开两边处理。对于上升段,如果一个点深度是x=dep_i+w_i,那么i就被贡献我们可以将整个上升段的x位置都加,然后在每个点处统计dep_i+w_i位置的值。每个点开一个vector记录修改操作。不过这样可能会有互相影响
- 2024-08-19树上合并 目前的总结
启发式合并(set)元素少的set中的元素一一插入元素多的set中。时间两只\(\log\)。空间最坏为\(n\)这个级别(结点数)(这是在默认一个结点最多增加一个元素的情况下)。log数据结构时间也是两只\(\log\)。dsuontree好像[也叫“树上启发式合并”](??)。[一般](?)是重链剖分一样划分
- 2024-07-25[lnsyoj2210/luoguP5069]纵使日薄西山
来源原题链接2024.7.25校内测验T3题意给定序列\(a\),\(m\)次查询,每次查询修改一个数,然后查询:每次操作选定最大且下标最小的数\(a_i\),使\(a_{i-1},a_i,a_{i+1}\)的值都减\(1\),查询将整个序列变为全非正数序列的操作次数.赛时50pts由于每次都会连带着相邻两个元素一
- 2024-07-20树上启发式合并
树上启发式合并(DSUontree),和莫队一样都是暴力美学,用于解决一些树上离线问题,尤其是指“对于每个节点,询问关于子树的信息”这类问题。而且虽然是暴力做法,但是时间复杂度神奇的来到了\(O(nlogn)\)。启发式合并启发式合并是一种思想,在合并两个集合时,优先将小集合合并到大集合中去
- 2024-07-14高级数据结构-可并堆
可并堆,就是可以合并的堆。堆满足一个性质,就是当前节点,都大于或者等于他的所有子树上的节点,自然在这里我所讲的是结点的权值。显而易见,既然可并堆是堆的一种,容易推出,可并堆也满足这个性质。现在思考一个问题,当题目里需要合并两个堆的时候,该如何合并呢?如果只是普通的堆的话,我们可以
- 2024-06-19无根树分治的三种常见方法
无根树分治一般常见于树上路径问题(计数,最优化等).常见题目如无权树树上距离为k(对1到n-1求)的路径数量.点分黑白且可以改,求两端都是黑点的最远路径.以我的理解,三种分治都是无法互相平替的,对于每种分治我尝试给出一道只能用这个分治的题目.三种分治复杂度均为logn*T(n).
- 2024-06-13树链剖分
基本概念将树中的点重新编号,使得树中任意一条路径,都可以转化成O(logn)段连续区间1.将一棵树转化成一个序列2.将树中的任意一段路径转化成logn段连续区间(线段树,树状数组)重链剖分重儿子:子树数量最多的根节点(只有一个,多个都是,任选一个即可)轻儿子:其余儿子重边:重儿
- 2024-05-04长链剖分
我们现在有一棵有根树(节点的深度定义为根到它的距离)。设节点\(u\)的所有儿子中,深度最大的点为它的长儿子,记作\(son_u\)。(存在多个则任取一个,没有儿子则为空)记每个节点到它的长儿子的变为长边,其余边为短边。一段极长的全部由长边组成的链称为长链。特别的,按此过程划分后,不在
- 2024-04-10CF1748E Yet Another Array Counting Problem の Solution
Link有些人还是啥都不会。看到题目应该能想到这是笛卡尔树的性质,因为每一对\((l,r)\)都满足最左端最大值位置相同,所以说明在笛卡尔树上,每一对点的lca相同,说明\(a\)和\(b\)序列的笛卡尔树相同。我们以下标为键,\(a_i\)为值建立大根笛卡尔树,现在题目就转换成在这个树上填
- 2024-04-09USACO 2008 Jan G]Cell Phone Network 最小支配集(最小覆盖集)
题目描述FarmerJohnhasdecidedtogiveeachofhiscowsacellphoneinhopestoencouragetheirsocialinteraction.This,however,requireshimtosetupcellphonetowersonhisN(1≤N≤10,000)pastures(convenientlynumbered1..N)sotheycanal
- 2024-04-08CF1833G
比较有意思的一道题容易想到从下往上满足要求。然后这题满足最优子结构,就有个dp。设dp[i][0/1/2]为在以i为根的子树中,i所在连通块大小为1/2/3是否可行。那么dp[i][0]可行的条件就是所有儿子的dp[son_i][2]都可行。dp[i][1]可行的条件就是有一个儿子dp[i][0]可行同时其他儿子dp[i]
- 2024-04-06P6680 [CCO2019] Marshmallow Molecules 题解
P6680题意一个\(n\)点\(m\)边的图,图无重边,无自环。满足这样一条性质:如果三边互不相等,则三边可以构成三角形。思路思路简单,用集合的思想来做。引用一下K0stlin大佬的性质:题目中的操作等价于将一个点大于某个儿子的儿子们赋给这个儿子(这里的儿子表示这个点有出边连向的
- 2024-03-22AT_agc044_c
problem&blog由于看到和三进制有关的操作,可以想到建造每个结点都有三个儿子的Trie。考虑维护两种操作。1.Salasa舞对于这种操作,就是把每一个节点的第一个儿子和第二个儿子交换。所以两个节点打个标记即可2.Rumba舞本质即为\(0\to1,1\to2,2\to0\)。前两者不用进