Struct
文章平均质量分 58
Nekroz_
这个作者很懒,什么都没留下…
展开
-
【模板】无符号按位高精度BigInterger
说说模板吗,思想我在这里就不写了,其实百度一下都有的。我将所有的东西几乎都扔进Struct BigInterger里面了。。。外面一个大模板,里面的“零件”我之后塞。。struct BigInterger{ static const int MAXNUM = 100000; static const int BASE = 10; int num[MAXNUM], len; BigInt...原创 2018-02-13 08:42:03 · 477 阅读 · 0 评论 -
【模板】树状数组BIT
讲树状数组之前,首先要来夸夸树状数组。 树状数组真的是一种好东西啊~~~代码极短,又非常好写,很实用,好东西呐。夸完了树状数组,现在就来讲讲树状数组。 树状数组(Binary Indexed Tree),又名二叉索引树,Fenwick树,其处理的问题模型一般可以转化为如下形式: 定义一个数组 a[1..n]a[1..n]a[1 .. n ],并维护一下两个操作:修改,给 a[i...原创 2018-06-09 20:21:27 · 327 阅读 · 0 评论 -
【模板】线段树
线段树是一种神奇的数据结构呀~~~ 由于线段树在OI中的运用十分灵活,没有固定性的模板,这里就给出能够完成以下操作的线段树: 1.给一段区间加上一个值 2.询问一个区间内数值的总和 很水对吧,所以这才叫模板。。。。 lazy−taglazy−taglazy-tag是个好东西,要养成写lazy−taglazy−taglazy-tag的好习惯。先码上一个链表版本的线段树:链表线段...原创 2018-05-04 19:43:05 · 542 阅读 · 0 评论 -
【模板】图论算法模板(持更)
图论图论是个大板块,建模在图论中占有很重要的地位,至于算法就是理解之后代码多敲敲,具体的架构还是差不多的。 图论大概有3个级别,第一级别就是没有边权的图,用于遍历或者强连通SCC跑一波等等;第二级别就是有边权的,这下算法多了,各种最短路和最小生成树都有了,一二级别有时候可以合并,遍历时没有边权实际上边权就是1;然后第三级别就是有流量(dalao们的网络流),当然还有各种变种,比如说加个费用啊...原创 2018-04-17 09:02:50 · 456 阅读 · 0 评论 -
【模板】无符号压位高精度BigInterger
好了,过了几天终于把BASE从10拓展到了1e8,这样做的意义之一是让运算速度大大加快(尤其是乘法),而且打高精度除以高精度也变得有了意义,我就在这里贴代码,写点注意事项就好了。首先还是外面的大框架struct BigInterger{ static const int MAXNUM = 100000; static const int BASE = 1e8; static const i...原创 2018-02-28 11:58:45 · 360 阅读 · 1 评论 -
【模板】可持久化数组
戳我可持久化数组是由可持久化线段树或可持久化平衡树实现的。这里先给出可持久化线段树的实现方法。为了方便起见,处理的数组长度为5, 起始的数组元素为1~5,修改是将第一个位置的数组元素改为2。 建树规则很简单,只要在叶子节点上写上该点的值就可以了。先根据原数组建一棵线段树第一次修改之后的线段树 我们发现,这两棵线段树中只有一个叶子节点的值发生了改变,而操作数非常多,假...原创 2018-05-17 21:24:45 · 921 阅读 · 0 评论 -
【模板】字典树Trie
TrieTrieTrie是解决一类字符串查找问题的利器,当然有些题目需要Trie支持的操作有很多,这里我只给出能够支持以下操作的TrieTrieTrie: 1.向Trie插入一个字符串 2.在Trie中查找一个字符串是否存在 普通的TrieTrieTrie有两种写法,一种是所有字符开一个儿子结点,另一种是使用左孩子右兄弟法。当然还有压缩Trie树,但目前不在我们讨论的范围之内。对于每个结...原创 2018-05-10 21:30:08 · 171 阅读 · 0 评论 -
【模板】矩阵Matrix(包含矩阵快速幂)
矩阵是种神奇的东西啊~~简单讲讲矩阵的运算法则++ \huge + 加法,两个行数和列数分别相同的矩阵可以进行加法运算,Ans矩阵每个位置上的数为两个矩阵相应位置上的数的和 −− \huge - 减法,与加法类似两个行数和列数分别相同的矩阵可以进行减法运算,Ans矩阵每个位置上的数为两个矩阵相应位置上的数的差 ∗∗ \huge * 数乘,表现为一个数乘一个矩阵,具体效果就是矩...原创 2018-04-12 16:32:41 · 309 阅读 · 0 评论 -
【模板】笛卡尔树
•笛卡尔树是一种同时满足二叉搜索树和堆的性质的数据结构。可在一个数组上构造出来(时间复杂度可以达到O(n))。树中节点有几个属性, key(节点元素的大小)、index(节点在原数组中的索引)、left(左子节点)、right(右子节点)、parent(父节点)。性质1.树中的元素满足二叉搜索树性质,要求按照中序遍历得到的序列为原数组序列2.树中节点满足堆性质,节点的key值要大于其左右子节点的k...原创 2018-03-23 12:01:31 · 296 阅读 · 0 评论 -
【模板】树的重心
树的重心定义:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡。 算法流程首先,利用前向星存边建立边表。由于无向,所以要连两次边。我们用一次 dfs()dfs()dfs() 建立以1为根节点时每个结点所在子树的结点数。接下来考虑把这个点删掉的结果,如果一个非根结点有 ppp 个儿子,那么删掉这个点之后会有 p+1p+...原创 2018-06-18 20:03:13 · 3011 阅读 · 0 评论