随笔分类 -  算法学习笔记

1
摘要:## CRT 求一个最小的 x 使得 $\begin{cases} x \equiv a_1\ ({\rm mod}\ b_1) \ x\equiv a_2\ ({\rm mod}\ b_2) \ ... \ x \equiv a_n\ ({\rm mod}\ b_n)\end{cases 阅读全文
posted @ 2023-09-08 13:47 Steven24 阅读(23) 评论(0) 推荐(0) 编辑
摘要:可能不太算前置的前置:[树链剖分学习笔记](https://www.cnblogs.com/Steven24/p/17558630.html "树链剖分学习笔记") 非常算前置的前置:[平衡树之Splay](https://www.cnblogs.com/Steven24/p/17539454.ht 阅读全文
posted @ 2023-07-26 18:56 Steven24 阅读(28) 评论(0) 推荐(0) 编辑
摘要:持续更新 但愿不咕 即树上启发式合并 一般用来解决不带修的子树询问问题 具体看一道题吧 CF600E Lomsat gelral 首先重链剖分确实是一个很神奇的东西 我们的 dsu 也是基于重儿子来的 首先这题非常暴力的一个做法就是对于每个点暴力统计它的子树里的答案 然后清空 这样的复杂度是 阅读全文
posted @ 2023-07-21 20:17 Steven24 阅读(15) 评论(0) 推荐(0) 编辑
摘要:字面意思 把一棵树解剖成若干条链 方便一些操作 ### 重链剖分 大多数树链剖分都指的这个 一些概念: - 重儿子:子树大小最大的儿子 - 轻儿子:除了重儿子以外的儿子 - 重边:它和重儿子的边 - 轻边:它和轻儿子的边 - 重链:把每一条重边连起来形成的链 大概就是 我们把每个节点的子树大小都算出 阅读全文
posted @ 2023-07-16 21:33 Steven24 阅读(22) 评论(0) 推荐(0) 编辑
摘要:![image](https://img2023.cnblogs.com/blog/3067044/202307/3067044-20230709211515755-1279201206.png) 本篇中所有应该放图的地方都会空出来 等拿到手机会补 ~~但是我真的都画完了你相信我~~ upd:补完了 阅读全文
posted @ 2023-07-09 21:26 Steven24 阅读(64) 评论(0) 推荐(2) 编辑
摘要:长期更新 但愿不咕 基本概念 这里只讨论有源汇的情况 首先有几个概念: 反边:我们建完每个正边后 紧接着建一条反边并让其权值为 0 然后每次让正边流过一定流量 v 时 把正边剩余流量 v 的同时把反边 +v 这样就形成了一个类似于“反悔”的机制 我们可以通过走反边让 阅读全文
posted @ 2023-07-07 21:35 Steven24 阅读(38) 评论(0) 推荐(0) 编辑
摘要:### 前置知识:二叉查找树 首先我们要看一下二叉查找树 它满足这些性质: 1.它是二叉树(废话) 2.对于任何一个根节点 它左子树的所有点都小于它 它右子树的所有点都大于它 所以实际上它的中序遍历就是对整个序列排序的结果 它非常的方便 支持查询很多的东西(后面会讲) 但是如果只是普通的插入 很容易 阅读全文
posted @ 2023-07-06 13:30 Steven24 阅读(76) 评论(0) 推荐(1) 编辑
摘要:![image](https://img2023.cnblogs.com/blog/3067044/202306/3067044-20230625205212024-1840668548.jpg) exgcd 时间复杂度:O(logmax{a,b}) 费马小定理时间复杂度:$O(\l 阅读全文
posted @ 2023-06-25 20:54 Steven24 阅读(34) 评论(0) 推荐(0) 编辑
摘要:![image](https://img2023.cnblogs.com/blog/3067044/202306/3067044-20230625203258317-794819563.jpg) 求欧拉函数时间复杂度:O(n)(因为要质因数分解) 阅读全文
posted @ 2023-06-25 20:33 Steven24 阅读(24) 评论(0) 推荐(1) 编辑
摘要:对于 ni 只有最多 2n 种取值 然后将它们进行分块处理 证明: ![image](https://img2023.cnblogs.com/blog/3067044/202306/3067044-2023 阅读全文
posted @ 2023-06-24 20:51 Steven24 阅读(18) 评论(0) 推荐(0) 编辑
摘要:对于多个形如 x - y = n 即为有负环 而bellman-ford的算法的原理是 n次对所有点进行松弛操作 若最后一次还有点可以被松弛 就证明有负环存在 code: ```cpp bool bellman_ford(int s) { memset(dis, 0x3f, sizeof dis ) 阅读全文
posted @ 2023-05-30 20:31 Steven24 阅读(18) 评论(0) 推荐(0) 编辑
摘要:前置知识:裴蜀定理:方程 ax+by=gcd(a,b) 必定有解 算法流程: ![image](https://img2023.cnblogs.com/blog/3067044/202305/3067044-20230528124509506-35987160.jpg) code: ` 阅读全文
posted @ 2023-05-28 12:48 Steven24 阅读(46) 评论(0) 推荐(2) 编辑
摘要:upd:好像写的很杂糅。。。懒得改了。。。 板:[P3370 【模板】字符串哈希](https://www.luogu.com.cn/problem/P3370 "P3370 【模板】字符串哈希") 复杂度:O(n) 用途:将一串字符串映射到一个数 ### 怎么写? 选取一个较小质数 p 选取一个较 阅读全文
posted @ 2023-02-12 10:50 Steven24 阅读(104) 评论(4) 推荐(0) 编辑
摘要:板:[P3375 【模板】KMP字符串匹配](https://www.luogu.com.cn/problem/P3375 "P3375 【模板】KMP字符串匹配") 时间复杂度:O(n+m) 定义一个nxt数组: ![image](https://img2023.cnblogs.com/blog/ 阅读全文
posted @ 2023-02-11 13:13 Steven24 阅读(95) 评论(2) 推荐(2) 编辑
摘要:搜索,也就是对状态空间进行枚举,通过穷尽所有的可能来找到最优解,或者统计合法解的个数。——oi wiki ### 1.DFS 深度优先搜索 实现:递归(栈) 特点:不找到一个答案不回头 用途:可行性 找单个解等 个人所用模板如下: ![image](https://img2023.cnblogs.c 阅读全文
posted @ 2023-02-10 09:40 Steven24 阅读(50) 评论(2) 推荐(2) 编辑
摘要:## Part1: 建树 单点修改 区间求和 关于线段树:假如我们有这样一个数列 3 3 2 8 0 7 2 1 那我们就可以建一个线段树 大概长这样: ![image](https://img2023.cnblogs.com/blog/3067044/202302/3067044-20230201 阅读全文
posted @ 2023-02-02 00:14 Steven24 阅读(60) 评论(0) 推荐(0) 编辑
摘要:[题目链接](https://www.luogu.com.cn/problem/P3865 "题目链接") 用途:对于一段区间的最大值 最小值 lcm等 用O(nlogn)预处理 O(1)查询 **以本题为例:定义数组 rmq[i][j] 表示 i ~ i+2k1 区间内的最大值** 预 阅读全文
posted @ 2023-02-01 23:08 Steven24 阅读(21) 评论(1) 推荐(0) 编辑
摘要:[题目链接](https://www.luogu.com.cn/problem/P3374 "题目链接") 用途:以O (logn) 的复杂度维护前缀和 [这个讲的超级清楚 我就不写了(](https://www.bilibili.com/video/BV1ce411u7qP/?spm_id_fro 阅读全文
posted @ 2023-02-01 21:26 Steven24 阅读(16) 评论(1) 推荐(0) 编辑
摘要:[题目链接](https://www.luogu.com.cn/problem/P2014 "题目链接") 先看树上背包的板子: ![](https://img2023.cnblogs.com/blog/3067044/202301/3067044-20230130231804455-8264294 阅读全文
posted @ 2023-01-31 00:18 Steven24 阅读(78) 评论(1) 推荐(2) 编辑
摘要:[题目链接](https://www.luogu.com.cn/problem/P3379 "题目链接") 顾名思义 就是求两个点的公共祖先 暴力做法就是先维护每个点的父亲 然后枚举 但显然这样的做法查询复杂度是O(n)的 就TLE了( 所以需要用倍增优化: 用f[i][j]表示第i个点 向上跳 $ 阅读全文
posted @ 2023-01-30 23:13 Steven24 阅读(54) 评论(1) 推荐(0) 编辑

1
点击右上角即可分享
微信分享提示