摘要: 矩阵 矩阵的乘法运算 定义 \[A(a_{i,j})_{s\times m}= \left( \begin{matrix} a_{11} & a_{12}&...& a_{1m} \\ a_{21} & a_{22}&...& a_{2m} \\ \vdots & \vdots && \vdots\ 阅读全文
posted @ 2025-10-25 15:46 R-99Player 阅读(8) 评论(0) 推荐(0)
摘要: 数论分块 定义 用于求解形如 \[\sum_{i=1}^{n}f(i)*g(\left \lfloor \frac{k}{i}\right\rfloor) \]的和式,通常被称为整除分块, 当能用O(1)的时间求出 \[\sum_{i=1}^{n}f(i) \]数论分块便能在O(\(\sqrt n\ 阅读全文
posted @ 2025-10-23 23:07 R-99Player 阅读(3) 评论(0) 推荐(1)
摘要: 引入 P2842 纸币问题 1 题目描述某国有 \(n\) 种纸币,每种纸币面额为 \(a_i\) 并且有无限张,现在要凑出 \(w\) 的金额,试问最少用多少张纸币可以凑出来?(保证可以凑出对应金额) 第一行两个整数 \(n,w\),分别表示纸币的种数和要凑出的金额。 第二行一行 \(n\) 个以 阅读全文
posted @ 2025-09-16 17:33 R-99Player 阅读(27) 评论(0) 推荐(0)
摘要: 1.广度优先遍历 2.深度优先遍历 1.前序遍历 根结点--左子树--右子树 void pre(int p){ printf("%d\n",p); if(tree[p].l)pre(tree[p].l); if(tree[p].r)pre(tree[p].r); } 2.中序遍历 左子树--根结点- 阅读全文
posted @ 2025-09-16 12:35 R-99Player 阅读(6) 评论(0) 推荐(0)
摘要: 最小生成树 定义 生成树:一张n个点的连通图中,选择n-1条边与n个点组成的树 最小生成树:即生成树中边权之和的最小者(可能存在多棵) P3366 【模板】最小生成树 Prim算法 O(mlogm) 与Dijkstra非常类似 将1号点放入生成树中并标记,同时更新与它相连的点的dis值 选择未标记的 阅读全文
posted @ 2023-01-25 10:40 R-99Player 阅读(27) 评论(0) 推荐(0)
摘要: 匈牙利算法 基础例题:【模板】二分图最大匹配 题目描述 给定一个二分图,其左部点的个数为 n,右部点的个数为 m,边数为 e,求其最大匹配的边数。 左部点从 1 至 n 编号,右部点从 1 至 m 编号。 ~~不多bb,直接上代码~~ 算法主要步骤: 从第一位开始找(先到先得) 后来者如果想匹配的对 阅读全文
posted @ 2023-01-25 10:39 R-99Player 阅读(77) 评论(0) 推荐(0)
摘要: int fa[10010]; int find(int x){ if(f[x]==x)return x;//找到祖先便返回 return f[a]=find(fa[x]);//递归寻找祖先 } void join(int x,int y){ fa[find(x)]=find(y);// } 阅读全文
posted @ 2023-01-25 10:38 R-99Player 阅读(14) 评论(0) 推荐(0)
摘要: 线段树 1.概念理解 如图 线段树作为一个数据结构,通常用来优化区间操作,如一个区间的数同时加减,乘除,求和等 如图中对数组1-4进行+3,那么我只需对#4节点+3和对#10节点+3 当要查询1-4之和时便只需查询#4与#10之和 同时在修改时还会给父节点添加标记(用来向下传递)与向上传递数据,以便 阅读全文
posted @ 2022-10-30 12:28 R-99Player 阅读(37) 评论(0) 推荐(0)
摘要: Dijkstra 例题:P4779 【模板】单源最短路径(标准版) 给定一个 \(n\) 个点,\(m\) 条有向边的带非负权图,请你计算从 \(s\) 出发,到每个点的距离。 数据保证你能从 \(s\)​ 出发到任意点。 输入格式 第一行为三个正整数 \(n, m, s\)。 第二行起 \(m\) 阅读全文
posted @ 2022-10-23 13:37 R-99Player 阅读(60) 评论(1) 推荐(0)