合集-OI

摘要:树上背包问题的使用场景 当一个问题满足树的结构,而且需要让我们选取某些边或某些点,使权值取到最值。这样的问题是树上背包问题. 树上背包模板 树上背包问题使用dfs. 一般来说,树上背包问题的基本框架如下图: void dfs(int s){ for(i:遍历s的全部子节点){ dfs(i); for 阅读全文
posted @ 2024-02-16 20:47 HaneDaniko 阅读(83) 评论(0) 推荐(1) 编辑
摘要:图论专题总结 Author : HaneDaniko Contest 二叉树遍历 欧拉路和欧拉回路 最短路 判断负环 判断最小环 最小生成树 拓扑排序 并查集 分层图和分层图最短路 tarjan dfs序 树上公共祖先 差分约束 二分图 扫描线 树链剖分 1. 二叉树遍历 二叉树分为前序遍历,中序遍 阅读全文
posted @ 2024-02-14 21:29 HaneDaniko 阅读(71) 评论(0) 推荐(1) 编辑
摘要:最小环-Floyed < O(N3) (N为节点数)> 关于Floyed能用于求解最小环的证明 对于一个环,我们总可以在环上找到任意三个点 i,j,k . 这三个点会把一个环分成三部分 我们设从 xy 的最短距离为 dis[i][j],那么 阅读全文
posted @ 2024-02-08 21:11 HaneDaniko 阅读(53) 评论(0) 推荐(0) 编辑
摘要:什么是分层图最短路 分层图是指有很多个平行的图,各个平行的图之间有特殊的连接边。 分层图最短路,是在原有的求图中某两个点之间的最短路基础上增加一个条件——可以选择 k 条路,将它们的路径长度变为零(或者其他操作,常见的还是变为0,其他的我们暂不考虑),这样即可通过缩短路径长度,找出在该条件下 阅读全文
posted @ 2024-02-08 21:10 HaneDaniko 阅读(77) 评论(0) 推荐(0) 编辑
摘要:优化思路 不用扫偶数,偶数只有2是素数,预处理一下即可. 初始化不用扫偶数(如果你还在用传统遍历初始化方法). 判断素数后不用扫偶数倍数,因为根本没初始化成素数. 总之就是把 i=2;;++i 都换成了 i=3;;i+=2 . 复杂度降一半. 代码 (还挺好背的) scanf("%d",&a); m 阅读全文
posted @ 2024-02-08 21:11 HaneDaniko 阅读(37) 评论(0) 推荐(0) 编辑
摘要:温馨提示:Contest 大字的右侧有目录可以快速跳转 Contest 背包DP 线性DP 区间DP 坐标DP 树形DP 状压DP 概率与期望DP 计数DP 单调优化DP 背包DP 背包DP可以理解为“从若干物品中选择特定物品”的问题的统称. 对背包问题开dp数组,通常需要考虑以下几个维度 已选物品 阅读全文
posted @ 2024-02-17 11:38 HaneDaniko 阅读(80) 评论(0) 推荐(0) 编辑
摘要:打线段树的时候容易踩的坑 数组开四倍 建树的时候叶节点赋值之后要return 单点修改的时候叶节点赋值之后也要return 单点修改的时候,要根据当前mid与搜索位置判断是要修改左子树还是右子树 区间查询的时候,边界条件不是 t[id].l=x&&t[id].r=y,而是 $ 阅读全文
posted @ 2024-02-19 09:11 HaneDaniko 阅读(32) 评论(1) 推荐(0) 编辑
摘要:扫描线的前置基础是 线段树 扫描线用于解决一些 覆盖问题或者重复问题, 比如说现在我有这样一道题: 题源 洛谷P5490 (CLOI 的 Vjudge 转存) 给出 n 个平行于坐标轴的矩形的坐标,求它们的面积并. 面积并指的是这些矩形的最大覆盖面积. 不难发现,当坐标绝对值很大时,我们采用 阅读全文
posted @ 2024-02-28 22:04 HaneDaniko 阅读(82) 评论(0) 推荐(2) 编辑
摘要:Written By HaneDaniko1 模式串匹配 1.1 概念解释 对于一个字符串 S,我们定义: S 的前缀 Prei 表示 Si 阅读全文
posted @ 2024-04-28 11:06 HaneDaniko 阅读(20) 评论(0) 推荐(0) 编辑
摘要:1 定义 二分图为一个无向图,满足:这个无向图可以被分成两部分,其中每部分内不存在边. 2 判定 奇环法:一张图是二分图,当且仅当图中不存在奇环. 染色法:一张图是二分图,当且仅当图能被染成两种颜色,且没有相邻的点颜色相同. 一般我们判断二分图利用的是染色法. BFS 染色法 bool check( 阅读全文
posted @ 2024-05-12 19:10 HaneDaniko 阅读(55) 评论(0) 推荐(3) 编辑
摘要:1. 二叉查找树 二叉查找树的思想和优先队列比较像,都是把若干个数据按一定规则插到一棵树里,然后就可以维护特定的信息. 在优先队列的大根堆实现里,我们让每棵子树的根节点都大于它的儿子,这样就可以保证根节点一定是那个最大值,也就是我们需要的最值操作. 那么二叉查找树,顾名思义是可以查找特定 \(ran 阅读全文
posted @ 2024-06-28 21:41 HaneDaniko 阅读(59) 评论(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 阅读(44) 评论(0) 推荐(1) 编辑
摘要:算法介绍 Kruskal 重构树用于快速判断节点的连通性. 考虑到,假如两个节点是联通的,则他们之间总会有一条边被选入最小生成树内,因此他们在最小生成树内也是联通的. 也就是说,我们可以通过求最小生成树来减少我们判断联通需要的边数. Kruskal 重构树的思想是这样的:假如有一条生成树边 \((x 阅读全文
posted @ 2024-07-30 19:01 HaneDaniko 阅读(55) 评论(0) 推荐(1) 编辑
摘要:模拟退火是一种适合求样本点较大的多峰函数极值的方法. 模拟退火有几个参数:初始温度(T0),终止温度(Te)和降温参数 d,具体地,模拟退火是让每次的当前温度 T 变为 d×T,直到终止,因此 Te 应为一个很接近 \(0 阅读全文
posted @ 2024-07-30 08:50 HaneDaniko 阅读(61) 评论(0) 推荐(1) 编辑
摘要:可持久化数据结构可爱捏 阅读全文
posted @ 2024-08-13 17:46 HaneDaniko 阅读(40) 评论(1) 推荐(2) 编辑
摘要:Testlib 是用于实现 SpecialJudge 的一种方式 为了使用 Testlib,你需要在你的文件中引用 Testlib.h testlib.h 下载 使用 Testlib 程序 以 Testlib 的 check 功能示例(实际上 Tesklib 不止可以实现 check 功能) 首先你 阅读全文
posted @ 2024-08-15 15:30 HaneDaniko 阅读(246) 评论(2) 推荐(2) 编辑
摘要:关于如何在本地实现交互 管道 Linux 内置了一种管道操作,可以方便地把 A 程序的输出和 B 程序的输入连接起来,只需要以下指令: A | B 此代码行的意思是:同时运行 AB,以及把 A 程序的输出和 B 程序的输入连接起来 实测 现有两个 阅读全文
posted @ 2024-08-19 19:52 HaneDaniko 阅读(42) 评论(0) 推荐(5) 编辑
摘要:OSU OSU yet Another OSU yet yet Another OSU OSU 的题目是这样的:有一些相邻的块,给定每一个块的联通概率,每个连通块对答案有 size3 的贡献,求总期望 关于此题我曾写过题解 此处 此类题的关键之处在于,当我们设计了一个线性状态 \(f_ 阅读全文
posted @ 2024-08-22 16:48 HaneDaniko 阅读(57) 评论(3) 推荐(2) 编辑
摘要:整体二分可以理解成普通二分改版,其实并没有改多少,并且一般对 check() 函数的复杂度要求更宽松 先来看一道经典题目:求区间排名 给一个数列,若干组询问 (l,r,k),求 [l,r] 内第 k 大,询问次数较大 注意到询问次数较大,因此需要整体二分来解决 首先考虑普通二 阅读全文
posted @ 2024-09-03 21:42 HaneDaniko 阅读(47) 评论(1) 推荐(1) 编辑
摘要:你现在有一个结构体 struct cth{ int rp=0; }; 如果你需要输出 cth.rp,则需要通过访问其成员函数来得到 cth a; cout<<cth.rp<<endl; 但注意到该结构体里只有一个变量,有时候为了简化引用过程,或者是有此方面的需要的时候,我们可以通过若干方法将其简化成 阅读全文
posted @ 2024-09-26 17:16 HaneDaniko 阅读(41) 评论(2) 推荐(2) 编辑

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