上一页 1 ··· 8 9 10 11 12 13 14 下一页
摘要: 对于一个多个子游戏的博弈,我们借助其SG函数烟究(某数学老师的口音)这个先后手的胜负。 给一个定义,其中 \(x\) 可以到达 \(x_i\) \(SG(x)=mex\{SG(x_1),SG(x_2),...,SG(x_n)\}\) 然后对于mex,我们定义其为集合中没有的第一个非负整数。 然后我们 阅读全文
posted @ 2022-02-24 09:48 cbdsopa 阅读(35) 评论(0) 推荐(0)
摘要: 用于维护异或的数据结构。(又是模拟赛保龄过来补) 废话多不多说了,直接上正题。 先说什么是线性基吧。() 就是说对于一个集合,如何它对于异或在线性基集合中封闭。那么我们认为之歌构造出的集合是线性基。对于异或封闭是什么意思?就是说它内的元素异或来异或去就只会得出原集合的东西。 怎么构造? 考虑对于每一 阅读全文
posted @ 2022-02-24 09:45 cbdsopa 阅读(47) 评论(0) 推荐(0)
摘要: 同trie,只是维护的字符只有0和1 可以通过每次如果可以选择不同字符则选择不同字符的贪心思想维护最大异或和。多用于解决异或问题。 为什么上面那样操作可以维护最大异或和?因为我们按照从高位往底的顺序,如果当前答案这一位异或得1,其他答案的更高位都不超过当前答案的更高位,且其他答案这一位异或得0,那么 阅读全文
posted @ 2022-02-24 09:44 cbdsopa 阅读(69) 评论(0) 推荐(0)
摘要: 终于来补线段树合并了,之前本来打算写的,结果懒了。 前置知识 动态开点线段树 算法操作 就是对于每个点维护一颗不全的线段树,对于每个节点记录其对应线段树的根节点。对于需要其子树贡献的节点,自下而上合并线段树,再查询。 很显然,和 Dsu on tree 是同类的算法. 具体实现 我们只需要知道线段树 阅读全文
posted @ 2022-02-24 09:42 cbdsopa 阅读(51) 评论(0) 推荐(0)
摘要: 就是对于一颗动态开点的线段树(而且一般为权值线段树),我们把它拆开拆成两份(一般来说:为了方便,按sz分裂) 可以用来干嘛呢,小编也很疑惑,或许是可以用于把这边线段树的区间转移到另一边? 那么废话不多说直接开始。 实现原理 有点类似于求排名为 \(k\) 的数的过程,考虑其左子树的值,如果这个值大于 阅读全文
posted @ 2022-02-24 09:41 cbdsopa 阅读(363) 评论(0) 推荐(0)
摘要: layout: post title: 权值线段树 subtitle: 线段树的特殊运用,可以称之为小小平衡树 categories: 数据结构 tags: [线段树] 顾名思义,维护权值的线段树。在一定情况下可以代替平衡树使用。 原理是用线段树维护桶,节点维护子树中数的个数。所以空间开销与数据的值 阅读全文
posted @ 2022-02-24 09:36 cbdsopa 阅读(65) 评论(0) 推荐(0)
摘要: 多用于 权值线段树 用多少点开多少点,空间复杂度降至 \(O(nlog{n})\) P3369 #include<bits/stdc++.h> using namespace std; #define file(a) freopen(#a".in","r",stdin),freopen(#a".ou 阅读全文
posted @ 2022-02-24 09:34 cbdsopa 阅读(47) 评论(0) 推荐(0)
摘要: 发现以前学的时候摸鱼,都没有搞明白原理,现在来捡了。 左偏树是一种可并堆,满足以下性质: 堆的性质:根的值比儿子大 左偏性质:左子树的距离不小于右子树的距离 距离是什么意思?就是指当前节点到最近的外节点的距离。 外节点是什么?就是不完整的节点,也就是儿子个数不满的节点。 堆的性质决定了左偏树的作用, 阅读全文
posted @ 2022-02-24 09:32 cbdsopa 阅读(57) 评论(0) 推荐(0)
摘要: 支持修改区间加、区间乘、查询区间和的线段树结构体封装版 可以类比的写出其他操作 struct node { int l,r,mid; long long d,lazyadd,lazymul; }; struct tree { node t[N*4]; void build(int i,int l,i 阅读全文
posted @ 2022-02-24 09:31 cbdsopa 阅读(45) 评论(0) 推荐(1)
摘要: 简单论一下区间修改,单点查询的树状数组。 我们是考虑维护一个对于原数组的差分数组,然后取答案时用原数组加上查分数组得到。 资料 二维树状数组 参考资料:资料 单点修改 void modify(int i,int j,int k) { a[i][j]+=k; for(int x=i;x<=n;x+=( 阅读全文
posted @ 2022-02-24 09:28 cbdsopa 阅读(24) 评论(0) 推荐(0)
上一页 1 ··· 8 9 10 11 12 13 14 下一页