- 博客(6)
- 收藏
- 关注
原创 luogu P4513 小白逛公园(维护区间最大子段和)
其实,对于我们的函数,不仅仅是void,int,long long,还可以自己定义返回值,比如这道题,我们的线段树的结构体为 Tree ,那么我们就可以将查询操作的返回值定义为 Tree ,那么int类型只能返回一个值的束缚就没有了。4、对于区间最大子段和,则有三种来源,左子树的最大子段和,右子树的最大子段和,左子树的右端最大子段和和右子树的左端最大子段和拼接起来。3、对于右端的最大子段和,可以是右子树的右端最大子段和,也可以是一整个右子树和左子树的右端最大子段和拼接起来。4、维护区间最大子段和mmax。
2023-11-01 11:36:57
86
原创 c++对拍程序 Windows+Linux
对拍,将两份代码的结果进行文件比较,从而找出一组hack数据,然后你就可以开开心心的对自己的错误代码进行debug了。其实大体上和Windows系统相差不大,稍微注意一下就OK了,(但是不说明细节就是千古罪人),干脆就将Windows系统下的代码复制一遍,再将不同之处标出来就OK了。(绝对不是在水字数)然后再稍微注意一下,Windows比较文件用的是 fc,但是Linux比较文件用的是 diff ,其他就没有太大的问题了。值得注意的是,要留意你的暴力程序的时间复杂度,适当调整一下随机数据的范围。
2023-10-26 16:23:32
269
原创 树链剖分。
树链剖分,就是将一颗树划分成多条链,每次在操作的时候则是对链进行修改。1、重儿子:这个节点的儿子中,子树最大的就是重儿子2、轻儿子:除了重儿子之外的其它子节点叶节点是没有重儿子和轻儿子的。3、轻边:节点与轻儿子连接的边4、重边:节点与重儿子连接的边5、重链:均由重儿子连接而成的一条链6、轻链:均由轻儿子连接而成的一条链。
2023-08-24 17:28:47
42
原创 强连通分量与缩点
如果有一个节点,这两个值相等,它只有两种可能:一种是,它是一个强连通分量中最早被遍历到的点,也就是这个强连通分量的代表节点;例如在一张图中,1,2,3,4是强连通分量,并且含有(1,5)这条边。那么,2,3,4必定可以通过绕圈的方式到达5,这个很容易理解,毕竟2,3,4可以到达1。例如[1,2],[2,3],[3,4],这样的一张图(不会画画),我们就可以知道,1,2,3,4是互相联通的。4、强连通分量:在一张图中,图本身不是强连通的,但是图的子图却有强连通的,则我们称这个子图就是这张图的强连通分量。
2023-07-17 19:45:18
258
原创 LCA(最近公共祖先)
跳到同一个高度后,再进行跳跃,倒序从 log n 遍历到0,如果两个子节点跳跃长度为2^i时跳到了同一个节点,就说明这个节点是它们的公共祖先,但是不一定是最近公共祖先。当两个节点往上跳一格时,所接触到的节点是相同的,那么可以肯定,这个节点就一定是它们的最近公共祖先了。就比如一条链也可以看作一颗树,两个深度相差很大的子节点,求公共祖先,每次询问的时间复杂度为O(n),多次询问肯定是吃不消的。而最近公共祖先,则是指两个节点共同的祖先中离得最近的一个,也就是深度最大的一个祖先节点。
2023-06-26 13:16:35
78
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人