随笔分类 - ACM 学习笔记
网络流
摘要:最近浅学了一下网络流相关问题,做了一些基础模板题,存一下板子 #最大流 最大流使用的均为 ISAP ###P3376 【模板】网络最大流 #include <bits/stdc++.h> #define INF 9223372036854775807 #define int long long us
扫描线
摘要:#简介 扫描线一般运用在图形上面,顾名思义,就是一条线在整个图上扫来扫去,它一般被用来解决图形面积,周长等问题。 扫描线的主要思想是虚拟出一条平行与 x 或 y 轴的无限长的线一路扫过去,如果发现触碰到矩形的边(被当前扫描线完全覆盖)就停下进行相关操作。 #一、面积并 题型:在二维坐标系上,给出多个
爬山算法与模拟退火
摘要:#爬山算法 ##简介 爬山算法是一种局部择优的方法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。更加形象些来讲,就是在迷雾中爬上山峰。 ###局部搜索算法 所谓局部搜索算法,就是只对局部的状态空间进行搜索,从而得出局部最优解的算法。这种算法的优点在于不用考虑时空
线段树与可持久化线段树
摘要:发现博客里没有线段树相关板子,遂决定跟主席树一起写一篇方便自己查看 可持久化线段树据说是去年的铜牌题,还有不到一个月就昆明站了,补一下( 内容参考: 线段树 从入门到进阶 OI Wiki 可持久化线段树(含主席树)原理与实现 #线段树 ##线段树的构建 线段树是一种二叉树,也就是对于一个线段,我们会
同余最短路
摘要:计组课划水研究了一下( 参考:OI Wiki #介绍 ##常见题型 给定 n 个整数,求这 n 个整数能拼凑出多少的其他整数( n 个整数可以重复取) 给定 n 个整数,求这 n 个整数不能拼凑出的最小(最大)的整数 至少要拼几次才能拼出模 k 余 p 的数 ##简介 同余最短路利用同余来构造一些状
树链剖分
摘要:参考博客:树链剖分详解 #树链剖分的引入 ##先回顾两个问题: 1、将树从x到y结点最短路径上所有节点的值都加上z 我们很容易想到,树上差分可以以 O(n+m) 的优秀复杂度解决这个问题 2、求树从x到y结点最短路径上所有节点的值之和 lca大水题,我们又很容易地想到,dfs O(n)预处理每个节点
基础树上问题
摘要:五天没见过逆向题的 flag 了,甚是自闭,遂决定切换一下心情水点 acm 的小水题,顺带记录一下 #LCA模板 发现博客里没有 LCA 模板,这不太好,放上板子方便 acv( 题目链接:P3379 【模板】最近公共祖先(LCA) 在线计算 LCA 一般使用倍增,也就是跳 1,2,4,8,16,32
Tarjan求割点与桥
摘要:参考博客:Tarjan算法(中):求割点与桥 #割点与桥的概念 ##割点: 在一个无向图中,如果有一个顶点集合,删除这个顶点集合以及这个集合中所有顶点相关联的边以后,图的连通分量增多,就称这个点集为割点集合。一个结点称为割点(或者割顶)当且仅当去掉该节点极其相关的边之后的子图不连通。 简单来说就是:
树的直径与树的重心
摘要:参考:oi-wiki #树的直径 图中所有最短路径的最大值即为「直径」,可以用两次 DFS 或者树形 DP 的方法在 O(n) 时间求出树的直径 ##做法1:两次 DFS 首先对任意一个结点做 DFS 求出最远的结点,然后以这个结点为根结点再做 DFS 到达另一个最远结点。第一次 DFS 到达的结点
最短路专题
摘要:部分内容转载自:樱狸-专题·最短路 侵删 #单源最短路 ##Dijkstra ###算法介绍: 算法特点:迪杰斯特拉算法使用了广度优先搜索解决赋权有向图或者无向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他图算法的一个子模块。 算法的思路:Dijkstra算法采用
求逆序对的三种方法
摘要:今天上线代提了句逆序数,并布置了一个编程求逆序数的思考题,正好借此机会总结一下求逆序对的三种方法:暴力、归并排序以及树状数组 #暴力 第一种暴力:写两层暴力比较,时间复杂度O(n^2) for (int i = 1; i < n; i++) for (int j = i + 1; j <= n; j
最小生成树/次小生成树/Kruskal重构树学习笔记
摘要:参考博客(侵删): 勿在浮沙筑高台-算法导论--最小生成树(Kruskal和Prim算法) yyys-次小生成树 niiick-Kruskal重构树—学习笔记 最近做了一下洛谷最小生成树的题单,把三种问题整理到这里方便今后查看 #最小生成树 关于图的几个概念定义: 连通图:在无向图中,若任意两个顶点