摘要: LCA最近公共祖先 对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u和v的祖先且x的深度尽可能大。在这里,一个节点也可以是它自己的祖先。-百度百科 先DFS求出每个点的深度,在通过倍增向上爬。$O(n\log{n})$预处理,$O(\log n)$查询 #in 阅读全文
posted @ 2022-07-17 13:38 Erfu 阅读(43) 评论(0) 推荐(0)
摘要: 起因 最近要写LCA然后忘记了ST表这么写QWQ ST表是什么,ST基于倍增和二进制划分动态规划可以在$O(nlogn)$预处理下$O(1)$回答问题 用于解决可重复问题,如$RMQ$问题 模板题 预处理 设$f[i][j]$为$f[i][i + 2^j +1]$的最大值,即从$i$开始的$2^j$ 阅读全文
posted @ 2022-07-17 11:46 Erfu 阅读(114) 评论(0) 推荐(0)
摘要: 本文整理自《算法竞赛进阶指南》IO.wiki 线段树一种用来维护区间信息的通用数据结构 线段树可以在 $O(log _n)$ 的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区间最大值,求区间最小值)等操作。 线段树的建树 通过递归将值划分为大于1的若干个区间,把数列划分为树形结构,通过 阅读全文
posted @ 2022-07-15 15:47 Erfu 阅读(52) 评论(0) 推荐(0)
摘要: 题目地址 标准完全背包 $$f[i] = max(f[i],f[i - v[i]] + w[i])$$ 思路见注释: #include <iostream> #include <cstring> using namespace std; const int N = 10000,M = 45; int 阅读全文
posted @ 2022-07-15 12:18 Erfu 阅读(43) 评论(0) 推荐(0)
摘要: 题目地址 [USACO2.2]集合 Subset Sums 题目描述 对于从 $1\sim n$ 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的。举个例子,如果 $n=3$,对于 ${1,2,3}$ 能划分成两个子集合,每个子集合的所有数字和是相等的: ${3}$ 和 ${1,2 阅读全文
posted @ 2022-07-14 18:07 Erfu 阅读(86) 评论(0) 推荐(0)
摘要: 题目地址 一道分组背包但是要改输入方式 #include <iostream> #include <cstring> using namespace std; const int N = 1001; int m,n; int f[N],v[N],w[N],b[N]; int g[350][350]; 阅读全文
posted @ 2022-07-14 16:58 Erfu 阅读(29) 评论(0) 推荐(0)
摘要: 题目地址 题目大意:求$n$的错位排序数 有全排列$1\sim n,\left { 1,2,3,\dots ,n\right }$对于$a[i]\ne i$ 我们称为错位排列 有递推式 $$D_n = (n-1)(D_{n-1} + D_{n-2})$$ 证明: 设有$n$的全排列$\left{1, 阅读全文
posted @ 2022-07-13 13:30 Erfu 阅读(56) 评论(0) 推荐(0)
摘要: 高斯消元 给定一个线性方程组,对其求解 $$ \begin{cases} & a_{11}x + a_{12}x_2 + \dots + a_{1n}x_{n} = b_1\ & a_{21}x + a_{22}x_2 + \dots + a_{2n}x_{n} = b_2\ & a_{m1}x + 阅读全文
posted @ 2022-06-13 13:27 Erfu 阅读(247) 评论(0) 推荐(0)