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