随笔分类 - 图论算法
摘要:[BZOJ4316]小C的独立集(仙人掌+树形DP) 题面 图论王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨。 这不,小C让小D去求一个无向图的最大独立集,通俗地讲就是:在无向图中选出若干个点,这些点互相没有边连接,并使取出的点尽量多。 小D虽然图论很弱,但是也知道无向图最大独立集是n
阅读全文
摘要:[BZOJ3354]创世纪(基环树+树形DP) 题面 applepi手里有一本书《创世纪》,里面记录了这样一个故事…… 上帝手中有着N 种被称作“世界元素”的东西,现在他要把它们中的一部分投放到一个新的空间中去以建造世界。每种世界元素都可以限制另外一种世界元素,所以说上帝希望所有被投放的世界元素都有
阅读全文
摘要:[BZOJ3786]星系探索(欧拉序+非旋treap) 题面、 物理学家小C的研究正遇到某个瓶颈。 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其余的所有星球均有且仅有一个依赖星球。主星球没有依赖星球。我们定义依赖关系如下:若星球a的依赖星球是b,
阅读全文
摘要:[LOJ3255][JOI 2020 Final]奥运公交(最短路) 题面 给出一个个点条边的有向图,经过每条边需要费用.选择一条边并将其反向需要费用(反向后经过的费用不变).问至多反向一条边,从1到n再回到1的最小花费 \(n \leq 200,m \leq 500
阅读全文
摘要:[AHOI2014]支线剧情(有上下界的网络流) 题面 JYY现在所玩的RPG游戏中,一共有N个剧情点,由1到N编号,第i个剧情点可以根据JYY的不同的选择,而经过不同的支线剧情,前往Ki种不同的新的剧情点。当然如果为0,则说明i号剧情点是游戏的一个结局了。 JYY观看一个支线剧情需要一定的时间。J
阅读全文
摘要:[SDOI2014]LIS(最小割) 题面 给定序列A,序列中的每一项Ai有删除代价Bi和附加属性Ci。请删除若干项,使得A的最长上升子序列长度减少至少1,且付出的代价之和最小,并输出方案。 如果有多种方案,请输出将删去项的附加属性排序之后,字典序最小的一种。 分析 先
阅读全文
摘要:[BZOJ2561]最小生成树(最小割) 题面 给定一个边带正权的连通无向图G=(V,E),其中N=|V|,M=|E|,N个点从1到N依次编号,给定三个正整数u,v,和L (u≠v),假设现在加入一条边权为L的边(u,v),那么需要删掉最少多少条边,才能够使得这条边既可能出现在最小生成树上,也可能出
阅读全文
摘要:[ZJOI2010]网络扩容(费用流) 题面 给定一张有向图,每条边都有一个容量和一个扩容费用。这里扩容费用是指将容量扩大所需的费用。求: 在不扩容的情况下,到的最大流; 将到的最大流增加所需的最小扩容费用。 分析 先求出原图的最大流,大小设为。
阅读全文
摘要:[LuoguP4208][JSOI2008]最小生成树计数 题面 现在给出了一个简单无向加权图。你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树。(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的)。由于不同的最小生成树可能很多,所以你只需要输出方案数对
阅读全文
摘要:树论算法复习笔记 省选前写的,现在发出来 树的直径 定义:树的直径是树上的最长路径。 值得注意的是,直径并不唯一 直径的性质 我们这里只讨论无负权的情况 直径两端点一定是叶子节点。 距任意点最远点一定是直径的端点,据所有点最大值最小的点一定是直径的中点。 两棵树相连,新直径的两端点一定是原四个端点中
阅读全文
摘要:网络流常见建图套路总结(重制版) 前置知识 网络流的基本算法:Dinic最大流,EK+SPFA求费用流 最小割,最小割最大流定理 二分图判定,匹配,相关性质 由于本文以建图方法为主,不涉及网络流算法的具体实现,以上前置知识一边看一边学也可以 最大流 二分图最大匹配与多重匹配 二分图匹配:给定一个二分
阅读全文
摘要:[BZOJ2127]happiness(最小割) 题面 高一一班的座位表是个n m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友。这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文科或者理科,那么他们又将收获一些喜悦值。作为计算机竞赛
阅读全文
摘要:[网络流24题]餐巾计划问题(费用流) 题面 一个餐厅在相继的 N天里,每天需用的餐巾数不尽相同。假设第 天需要块餐巾( i=1,2,...,N)。餐厅可以购买新的餐巾,每块餐巾的费用为 p 分;或者把旧餐巾送到快洗部,洗一块需 m 天,其费用为 f 分;或者送到慢洗部,洗一块需 n
阅读全文
摘要:[BZOJ1001]狼抓兔子(平面图最小割) 题面 略 分析 我们发现,如果把 每个平面区域看成一个点 ,交界处的边看成连接两个区域的边,再加两个点表示分割线的起点和终点、那么原图的一个割就对应新图的一条路径。如图上S (1) (4) (9) (10) T就构成了一个分割线,割断的边权为5,6,3,
阅读全文
摘要:[AT5203][AGC038F]Two Permutations(网络流).md 题面 给出两个排列.要求构造两个排列. 要求:要么等于,要么等于;要么等于,要么等于 最大化的下标数量 分析
阅读全文
摘要:[GDSOI2017]中学生数据结构题(树链剖分+fhq treap) 题面 给出一棵树,支持三种操作 1. ADD:路径加 2. QUERY:路径求和 3. SHIFT:树上路径整体循环移动一位(如:原路径上的权值依次是:1,4,5,3,操作完后变成:3,1,4,5) 分析 考验数据结构功底和代码
阅读全文
摘要:动态DP学习笔记 约定: 若无特别说明,数组下标从1开始. 若无特别说明,矩阵的下标从0开始(这是为了和代码一致,而代码这样实现是为了节省内存) 在公式中,矩阵用粗斜体表示,如 若无特别说明,对于有根树上的结点,表示它儿子的集合,表示它的重儿子 对
阅读全文
摘要:[POJ1149][SPOJ4063]PIGS(最大流) 题面 略 分析 很妙的网络流建图套路。 注意到我们只能交换客户打开过的猪圈里的猪。那么相当于可以通过顾客来中转猪。体现到建图上就是: 我们把每一个顾客看成一个点。对于每个猪圈,从原点向打开它的第一个顾客连边,容量为初始猪数量,表示最
阅读全文
摘要:[BZOJ3879]SvT(后缀树+虚树) 题面 有一个长度为n的仅包含小写字母的字符串S,下标范围为[1,n]. 现在有若干组询问,对于每一个询问,我们给出若干个后缀(以其在S中出现的起始位置来表示),求这些后缀两两之间的LCP的长度之和.一对后缀之间的LCP长度仅统计一遍. 分析 建出S的后缀树
阅读全文
摘要:[NOI Online 提高组]序列 (并查集+二分图判定) 题面 略 分析 首先不妨令,这样我们需要通过一系列操作把所有变成0. 我们把每个位置看成点。 对于所有2操作连边。如果两个位置连通,就可以使一个位置+1,一个位置 1.那么对于一个连通块, 无论我们怎么
阅读全文