摘要: 一维树状数组 · 单点修改 + 单点查询: 直接使用即可 · 区间修改 + 单点查询: 另外维护一个维护前缀和的树状数组,查询时查询与原值相加即可。 · 区间修改 + 区间查询: 若要查询区间$[1, R]$的区间和,可推公式,其中$D[i]$表示差分数组: $\sum\limits_{i=1}^R 阅读全文
posted @ 2018-10-25 21:49 Colythme 阅读(182) 评论(0) 推荐(0)
摘要: zkw线段树是对普通线段树的常熟优化版本,$≈$树状数组的常数。 同时普通线段树是近似完全二叉树,而zkw线段树是满二叉树,且普通线段树自上而下访问,zkw线段树先找到叶子节点,自下而上进行访问。 那么易得建树 对于区间修改或查询,我们假定此时区间为$[L, R]$,那么令$s = L - 1$,$ 阅读全文
posted @ 2018-10-20 21:49 Colythme 阅读(305) 评论(0) 推荐(0)
摘要: · 题解 参考hzwer 首先看到Mi的条件想到构造虚树。 虚树中的一条边已经覆盖了整个出现在这条边上的点的子树的情况。 那么只需倍增查找所属议事处有变化的边界节点,同时计算这两段节点的贡献即可。 · 代码 1 #include <iostream> 2 #include <cstdio> 3 #i 阅读全文
posted @ 2018-10-05 21:19 Colythme 阅读(230) 评论(0) 推荐(0)
摘要: · 定理 $n$个节点二叉树形态种类数为$Cat (n)$。 · 证明 很难通过简单递推得到答案,因为会产生重复的情况。 一般我们使用二叉树都是通过递归,故考虑从递归处得到启发。 对于任意$n$个节点的二叉树,它的左右子节点个数是可以被枚举的 —— $1 + (n - 1) / 2 + (n - 2 阅读全文
posted @ 2018-10-01 20:43 Colythme 阅读(166) 评论(0) 推荐(0)
摘要: · 题解 首先考虑设ƒi为i发光的概率,那么它可以从子节点、自身、和父节点传过来,但是,这是其中至少有一个通电的问题,也就是“或”,因为它们的目的是一样的——都是使当前通电,也就是说它们并不是互斥的状态,比如子节点和父节点都是50%,那么这个节点的通电概率就是$100%$了吗?显然不是,虽然有这个公 阅读全文
posted @ 2018-09-28 11:39 Colythme 阅读(199) 评论(0) 推荐(0)
摘要: · 题意 对于一个DAG,在图中任意添加一条边,求可形成的树形图个数。 · 题解 首先对于一个DAG,它们可形成的树形图的个数显然是各点入度相乘。 那么现在加入了一条边,可能会构成环,于是可以用总方案数减去不合法方案数(即构成环的方案数)。 本题解题的关键在于如何构造不合法方案,那么y -> x的所 阅读全文
posted @ 2018-09-27 10:53 Colythme 阅读(105) 评论(0) 推荐(0)
摘要: · 定义 对于有向无环图$G (V, E)$,类似最小生成树的定义,有向图最小树形图即在有向图上查找总权值和最小的树形图(即有向边的树)。 · 朱 - 刘算法 对于每个点先选取到达它的最小的边,这样可组成一个边集E1,显然,该边集权值和最小,但不一定是树。 在该边集上进行缩点,并判断是否有解(是否有 阅读全文
posted @ 2018-09-26 23:36 Colythme 阅读(215) 评论(0) 推荐(0)
摘要: 大意: Kruskal重构树即是将正常Kruskal算法中的最小生成树的边当作点,连接两个点集,且满足大(小)根堆性质,那么求两点间经过路径长度最值即它们的LCA的点权。 证明: 对于两个集合,它们之间的路径最值即连通这两个集合的最值边,且边已经过排序,故显然满足条件。 证毕。 经典用法: · 求两 阅读全文
posted @ 2018-09-25 20:34 Colythme 阅读(255) 评论(0) 推荐(0)
摘要: 题意: 给定两个序列$a$和$b$,让它们进行匹配,求出使得$a_i > b_j$的个数比$a_i < b_j$的个数恰好多$k$,求这样的匹配方法数 题解: 这题的各种表示有一点相似又截然不同,很容易混淆。 直接求恰好满足$k$对不好求,所以先放宽条件,这样子有利于构造动规方程。 先用$f_{i, 阅读全文
posted @ 2018-09-25 07:58 Colythme 阅读(156) 评论(0) 推荐(0)
摘要: · 假设此时已求出标准完全背包,用$f[j]$表示。 · 本题关键在于,由于有个数限制,那么可以强制令当前状态不满足限制,即若最多取$Have[i]$个,强制令其先取$Have[i] + 1$个,那么减去$f[S - (Have[i] + 1)]$即可,当然需用容斥原理来进行加减。 · 代码: 1 阅读全文
posted @ 2018-09-24 20:30 Colythme 阅读(94) 评论(0) 推荐(0)