摘要:
这一篇居然是错的!情急之下,先背板子吧! nxt[1]=0; for(int i=2,j=0;i<=m;i++){ while(j&&t[i]!=t[j+1])j=nxt[j]; if(t[i]==t[j+1])j++; nxt[i]=j; } for(int i=1,j=0;i<=n;i++){ 阅读全文
摘要:
题目简要描述: 有 \(n\) 个节点 \(m\) 条边的无向图,每条边有边权,每个点有点权。从一个点出发到另一个点去看赛艇表演,所要花费的代价是往返道路的边权和加上赛艇表演的节点点权。输出从每一个节点出发看赛艇表演的最小代价。(注:可以不动,就在这个节点看)n,m<=2e5,点权,边权<=1e12 阅读全文
摘要:
简介 Treap 是 Tree 与 Heap 的合并词,是一种比较基础的平衡树。 BST,即二叉搜索树,是一种支持插入、删除、多种查询的数据结构,操作的期望复杂度均为 \(O(\log n)\)。它每个节点有一个键值,它的性质是:任节点左儿子为根的子树中所有节点的键值<该节点键值<右儿子为根的子树中 阅读全文
摘要:
线段树(Segment Tree),是一种支持单点/区间修改、满足结合律的询问(如求和、最值等)的数据结构。 下图可以大体表示线段树的工作原理。 解释: 容易看出最顶上的是原数组,每个叶子节点依次是一个单个的数组元素。而对于每个非叶子节点,将其分解为两半——假使这个节点储存的是 \([l,r]\) 阅读全文
摘要:
扫描线 给定 $n$ 个矩形的左上角坐标和右下角坐标的位置,求这些矩形的并的面积和周长。 在讲面积和周长的解法之前,我们先来看一个 first of all 的题目。 线段树覆盖问题 一个数组 $a$ 初始全为 0,长度为 $n$,有 $m$ 个修改操作,就是把下标 $l_i\sim r_i$ 的数 阅读全文
摘要:
矩阵乘法是一种最为常见的矩阵运算,一个 \(n\times m\) 的矩阵和一个 \(m\times p\) 的矩阵可以进行矩阵乘法;矩阵乘法满足结合律(\(A\times B\times C=(A\times B)\times C=A\times (B\times C)\)),但不满足交换律(\( 阅读全文
摘要:
跳跳蛙的故事 很久很久以前有一只跳跳蛙,他要从一条长为 \(n\) 笔直的路上的A地跳到B地。 能吃苦的跳跳蛙从A地开始,每次跳一步,终于在很久以后,\(d\) 天之后来到了B地。 又过了几年,跳跳蛙又想去B地。 可是跳跳蛙这次要参加一个紧急会议,一步一步跳未免太慢了,他会被炒鱿鱼的。 跳跳蛙决定第 阅读全文
摘要:
二叉堆是一棵完全二叉树。大根堆:对于每一棵子树,有他的根节点大于所有非根节点。小根堆则相反。请注意二叉堆不等同于二叉搜索树——其中序遍历并不一定有序。下图是一个小根堆: 堆的存在可以让我们快捷地找到他的最值(小根堆:最小值;大根堆:最大值;同时不必局限于数字的大小,而可以拓广到依题目所定的优先级), 阅读全文
摘要:
背包问题是动态规划问题中常见的一个分支,常用的有 01背包,完全背包,和多重背包,本篇文章详解01背包和完全背包。 01背包 问题描述:有一个容量为 $m$ 的背包,有 $n$ 个物品每个只有一件,第 $i$ 个物品占用 $w_i$ 单位空间、拥有 $c_i$ 的价值,求问在这个背包中放入若干物品使 阅读全文
摘要:
图上最短路径算法分为单源最短路、多源最短路,单源常见算法:Bellman-ford、SPFA、Dijkstra及其堆优化;多源常见算法:Floyd。 单源最短路 Bellman-ford 记 $dis_u$ 为源点到 $u$ 当前的最短路。循环,每一次循环:枚举每一条边,尝试利用这一条边和边连接的两 阅读全文