合集-OI

摘要:树上背包问题的使用场景 当一个问题满足树的结构,而且需要让我们选取某些边或某些点,使权值取到最值。这样的问题是树上背包问题. 树上背包模板 树上背包问题使用dfs. 一般来说,树上背包问题的基本框架如下图: void dfs(int s){ for(i:遍历s的全部子节点){ dfs(i); for 阅读全文
posted @ 2024-02-16 20:47 HaneDaniko 阅读(113) 评论(0) 推荐(1)
摘要:图论专题总结 Author : HaneDaniko Contest 二叉树遍历 欧拉路和欧拉回路 最短路 判断负环 判断最小环 最小生成树 拓扑排序 并查集 分层图和分层图最短路 tarjan dfs序 树上公共祖先 差分约束 二分图 扫描线 树链剖分 1. 二叉树遍历 二叉树分为前序遍历,中序遍 阅读全文
posted @ 2024-02-14 21:29 HaneDaniko 阅读(176) 评论(0) 推荐(1)
摘要:最小环-Floyed < \(O(N^{3})\) (\(N\)为节点数)> 关于Floyed能用于求解最小环的证明 对于一个环,我们总可以在环上找到任意三个点 \(i,j,k\) . 这三个点会把一个环分成三部分 我们设从 \(x\) 到 \(y\) 的最短距离为 \(dis[i][j]\),那么 阅读全文
posted @ 2024-02-08 21:11 HaneDaniko 阅读(97) 评论(0) 推荐(0)
摘要:什么是分层图最短路 分层图是指有很多个平行的图,各个平行的图之间有特殊的连接边。 分层图最短路,是在原有的求图中某两个点之间的最短路基础上增加一个条件——可以选择 \(k\) 条路,将它们的路径长度变为零(或者其他操作,常见的还是变为0,其他的我们暂不考虑),这样即可通过缩短路径长度,找出在该条件下 阅读全文
posted @ 2024-02-08 21:10 HaneDaniko 阅读(140) 评论(0) 推荐(0)
摘要:优化思路 不用扫偶数,偶数只有2是素数,预处理一下即可. 初始化不用扫偶数(如果你还在用传统遍历初始化方法). 判断素数后不用扫偶数倍数,因为根本没初始化成素数. 总之就是把 i=2;;++i 都换成了 i=3;;i+=2 . 复杂度降一半. 代码 (还挺好背的) scanf("%d",&a); m 阅读全文
posted @ 2024-02-08 21:11 HaneDaniko 阅读(74) 评论(0) 推荐(0)
摘要:温馨提示:Contest 大字的右侧有目录可以快速跳转 Contest 背包DP 线性DP 区间DP 坐标DP 树形DP 状压DP 概率与期望DP 计数DP 单调优化DP 背包DP 背包DP可以理解为“从若干物品中选择特定物品”的问题的统称. 对背包问题开dp数组,通常需要考虑以下几个维度 已选物品 阅读全文
posted @ 2024-02-17 11:38 HaneDaniko 阅读(114) 评论(0) 推荐(0)
摘要:打线段树的时候容易踩的坑 数组开四倍 建树的时候叶节点赋值之后要return 单点修改的时候叶节点赋值之后也要return 单点修改的时候,要根据当前mid与搜索位置判断是要修改左子树还是右子树 区间查询的时候,边界条件不是 $ t[id].l=x \And\And t[id].r=y $,而是 $ 阅读全文
posted @ 2024-02-19 09:11 HaneDaniko 阅读(85) 评论(1) 推荐(0)
摘要:扫描线的前置基础是 线段树 扫描线用于解决一些 覆盖问题或者重复问题, 比如说现在我有这样一道题: 题源 洛谷P5490 (CLOI 的 Vjudge 转存) 给出 \(n\) 个平行于坐标轴的矩形的坐标,求它们的面积并. 面积并指的是这些矩形的最大覆盖面积. 不难发现,当坐标绝对值很大时,我们采用 阅读全文
posted @ 2024-02-28 22:04 HaneDaniko 阅读(143) 评论(0) 推荐(2)
摘要:\[\texttt{Written By } \mathfrak{HaneDaniko} \]\(\mathscr{1}\) 模式串匹配 \(\mathscr{1.1}\) 概念解释 对于一个字符串 \(S\),我们定义: \(S\) 的前缀 \(Pre_{i}\) 表示 \(S\) 前 \(i\) 阅读全文
posted @ 2024-04-28 11:06 HaneDaniko 阅读(54) 评论(0) 推荐(0)
摘要:1 定义 二分图为一个无向图,满足:这个无向图可以被分成两部分,其中每部分内不存在边. 2 判定 奇环法:一张图是二分图,当且仅当图中不存在奇环. 染色法:一张图是二分图,当且仅当图能被染成两种颜色,且没有相邻的点颜色相同. 一般我们判断二分图利用的是染色法. BFS 染色法 bool check( 阅读全文
posted @ 2024-05-12 19:10 HaneDaniko 阅读(80) 评论(0) 推荐(3)
摘要:1. 二叉查找树 二叉查找树的思想和优先队列比较像,都是把若干个数据按一定规则插到一棵树里,然后就可以维护特定的信息. 在优先队列的大根堆实现里,我们让每棵子树的根节点都大于它的儿子,这样就可以保证根节点一定是那个最大值,也就是我们需要的最值操作. 那么二叉查找树,顾名思义是可以查找特定 \(ran 阅读全文
posted @ 2024-06-28 21:41 HaneDaniko 阅读(84) 评论(3) 推荐(1)
摘要:using namespace __gnu_pbds; Luogu Post#39 1.堆 1.1 基本信息 头文件 #include <ext/pb_ds/priority_queue.hpp> 定义 __gnu_pbds::priority_queue<T,Compare,Tag,[*]Allo 阅读全文
posted @ 2024-07-09 12:14 HaneDaniko 阅读(86) 评论(0) 推荐(1)
摘要:算法介绍 Kruskal 重构树用于快速判断节点的连通性. 考虑到,假如两个节点是联通的,则他们之间总会有一条边被选入最小生成树内,因此他们在最小生成树内也是联通的. 也就是说,我们可以通过求最小生成树来减少我们判断联通需要的边数. Kruskal 重构树的思想是这样的:假如有一条生成树边 \((x 阅读全文
posted @ 2024-07-30 19:01 HaneDaniko 阅读(106) 评论(0) 推荐(1)
摘要:模拟退火是一种适合求样本点较大的多峰函数极值的方法. 模拟退火有几个参数:初始温度(\(T_{0}\)),终止温度(\(T_{e}\))和降温参数 \(d\),具体地,模拟退火是让每次的当前温度 \(T\) 变为 \(d\times T\),直到终止,因此 \(T_{e}\) 应为一个很接近 \(0 阅读全文
posted @ 2024-07-30 08:50 HaneDaniko 阅读(106) 评论(0) 推荐(1)
摘要:可持久化数据结构可爱捏 阅读全文
posted @ 2024-08-13 17:46 HaneDaniko 阅读(103) 评论(1) 推荐(2)
摘要:Testlib 是用于实现 SpecialJudge 的一种方式 为了使用 Testlib,你需要在你的文件中引用 Testlib.h testlib.h 下载 使用 Testlib 程序 以 Testlib 的 check 功能示例(实际上 Tesklib 不止可以实现 check 功能) 首先你 阅读全文
posted @ 2024-08-15 15:30 HaneDaniko 阅读(557) 评论(2) 推荐(2)
摘要:关于如何在本地实现交互 管道 Linux 内置了一种管道操作,可以方便地把 \(A\) 程序的输出和 \(B\) 程序的输入连接起来,只需要以下指令: A | B 此代码行的意思是:同时运行 \(A\) 和 \(B\),以及把 \(A\) 程序的输出和 \(B\) 程序的输入连接起来 实测 现有两个 阅读全文
posted @ 2024-08-19 19:52 HaneDaniko 阅读(76) 评论(0) 推荐(5)
摘要:OSU OSU yet Another OSU yet yet Another OSU OSU 的题目是这样的:有一些相邻的块,给定每一个块的联通概率,每个连通块对答案有 \(size^{3}\) 的贡献,求总期望 关于此题我曾写过题解 此处 此类题的关键之处在于,当我们设计了一个线性状态 \(f_ 阅读全文
posted @ 2024-08-22 16:48 HaneDaniko 阅读(104) 评论(3) 推荐(2)
摘要:整体二分可以理解成普通二分改版,其实并没有改多少,并且一般对 check() 函数的复杂度要求更宽松 先来看一道经典题目:求区间排名 给一个数列,若干组询问 \((l,r,k)\),求 \([l,r]\) 内第 \(k\) 大,询问次数较大 注意到询问次数较大,因此需要整体二分来解决 首先考虑普通二 阅读全文
posted @ 2024-09-03 21:42 HaneDaniko 阅读(117) 评论(1) 推荐(1)
摘要:你现在有一个结构体 struct cth{ int rp=0; }; 如果你需要输出 cth.rp,则需要通过访问其成员函数来得到 cth a; cout<<cth.rp<<endl; 但注意到该结构体里只有一个变量,有时候为了简化引用过程,或者是有此方面的需要的时候,我们可以通过若干方法将其简化成 阅读全文
posted @ 2024-09-26 17:16 HaneDaniko 阅读(97) 评论(2) 推荐(2)
摘要:喵~>_< 阅读全文
posted @ 2024-09-30 19:55 HaneDaniko 阅读(140) 评论(2) 推荐(2)
摘要:学的时候比较朦胧,现在不朦胧了,所以写一下 讲解 重儿子:一个节点的子树大小最大的儿子 轻儿子:非重儿子 重链:节点 -> 重儿子 -> 重儿子 .. 这样的链 A beautiful Tree 蓝线为重链 可以发现,树上的所有节点一定属于且仅属于一个重链 首先要知道如何找重链 这很简单,可以通过一 阅读全文
posted @ 2024-10-05 17:37 HaneDaniko 阅读(78) 评论(4) 推荐(2)
摘要:详解 Borůvka 算法的本质是一种多路 Prim 最小生成树算法,复杂度 \(m\log n\),但劣于 Kruskal 的 \(\log\) 算法功能:求简单图的最小生成树 算法流程是这样的 考虑当前的图(未连边),一定由若干连通块构成,我们考虑连接连通块 可以想到,对于任意一个连通块,一定应 阅读全文
posted @ 2024-11-09 19:20 HaneDaniko 阅读(2576) 评论(16) 推荐(27)
摘要:咋这知识点也能丢 线段树分治(目前学到的)能解决形如操作对询问有区间影响的题目(并且要求操作可撤销),这种情况下,可以直接对询问建线段树,然后预处理出询问对哪些区间有影响,直接在线段树上区间修改(线段树节点上记录这个节点处的操作),注意这里需要修改的只有符合要求的最上层的点,修改完直接返回,后续也无 阅读全文
posted @ 2024-11-18 20:52 HaneDaniko 阅读(162) 评论(7) 推荐(6)
摘要:因为很长一段时间内并不知道这个编译参数究竟是干什么用的,只知道这个参数在 NOI 系列赛事中普遍使用,并且会导致编译输出文件变大,直到碰到具体问题了才发现这个参数的作用 -static 参数是静态链接开关,不加这个参数默认是动态链接,加上这个参数以后是静态链接,先说一下静态链接和动态链接都是什么吧 阅读全文
posted @ 2025-02-02 11:02 HaneDaniko 阅读(107) 评论(2) 推荐(2)