图论
Thomas_ZQQ@Runespoor
这个作者很懒,什么都没留下…
展开
-
【题解】CCPC-final 2019 Problem B - Infimum of Paths
题目链接题意求有向图0道1的字典序最小路径(注意,这里转化成小数值,所以和路径长度毫无关系,末尾可以接无数个0)观察:肯定会有无限循环的情况,但是只会在一个最优的环上走这道题首先要做两个事情删除不能到1的点把1加上0的自环,这样可以把无限和有限放在一起处理有三种方法。其中两种是题解的方法1正着走,贪心的思想,每次走最优的路径。更新合法的点集(注意这里需要去重,否则会指...原创 2020-02-06 12:35:40 · 814 阅读 · 0 评论 -
【知识小结】圆方树 && 广义圆方树
例题杂事:datamaker感觉仙人掌好难造,我是在树上随机加边#include<bits/stdc++.h>using namespace std;#define rep(i,l,r) for(register int i = l ; i <= r ; i++)#define repd(i,r,l) for(register int i = r ; i >=...原创 2019-04-12 13:32:38 · 570 阅读 · 0 评论 -
【算法小结】CDQ处理动态图问题
问题描述支持,加边,删边或者修改边权。询问图每个时刻的最大生成树或者联通块个数,两点路径上最小边权的最大值Problem 1: 加边,删边,求桥的个数claris的题解先cdq分治修改,把每一层不被修改涉及的所有边加入图中,tarjian缩边双,然后建树。把这棵树上的非关键点压缩掉。建出新的虚树。这样每一层的树的大小和边数都是O(区间长度)总复杂度O(nlogn)注意:图有两次...原创 2019-03-30 21:48:31 · 417 阅读 · 0 评论 -
【知识小结】图匹配相关总结
二分图最小路径覆盖DAG最小路径覆盖证明转自定义:在一个有向图中,找出最少的路径,使得这些路径经过了所有的点。路径不能相交:算法:把原图的每个点V拆成Vx和Vy两个点,如果有一条有向边A-&gt;B,那么就加边Ax−&gt;By。这样就得到了一个二分图。那么最小路径覆盖=原图的结点数-新图的最大匹配数。证明:一开始每个点都是独立的为一条路径,总共有n条不相交路径。我们每次在二分图里...原创 2019-03-12 16:02:16 · 150 阅读 · 0 评论 -
【题解】uoj236 【IOI2016】railroad(欧拉图+最小生成树)
这篇题解很好总结:特殊的哈密顿回路通常考虑转化成欧拉回路。把NP问题转化成可解的东西把速度看成点,一个很巧妙的转化!这题利用了欧拉回路存在的充要条件每个联通块的进入和出去的边数相同,等价于所有点出入度相同。然后要一次性走完,还要联通,因此要最小生成树。离散化后unique一下就没有孤立点了。所有留下的点都要联通#include<bits/stdc++.h>using ...原创 2019-03-11 15:22:14 · 421 阅读 · 0 评论 -
【题解】codeforces 793G - Oleg and chess 线段树优化建边--最大流
题意一个网格图,删除一些矩形中的格子每行每列只能放一个棋子,问最多放多少个n , q <= 1e4题解标准的网络流模型是行列分开连边对矩形扫描线可持久化线段树维护当前可行的格子。矩形差分,每次修改新建节点,如果一段区间都被删除则不连边。因为矩形没有重叠,非常好写!一开始还以为有高论,结果是简单的模型总结:这样简单的题必须快速写,基本的模型,没有细节,只需要写的时候...原创 2019-03-06 18:58:34 · 270 阅读 · 0 评论 -
【题解】codeforces 1023G. Pisces 最长反链 数据结构维护差分 启发式合并
problem题解这道题非常巧!我的姿势水平太落后,一开始还在想费用流,如何优化建边(可能是因为看到题目tag里有个flow。一定不能被这些tag影响,要自己摸索题目算法)费用流是经典模型:把在每一天拆点,一个表示必须用,一个表示用了的给以后的点使用。同:餐巾计划问题要是优化建边树分治?边都是nlog^2,简直是胡思乱想!Dilworth定理全集U是一个偏序集U的链划分使用的最...原创 2019-03-05 20:04:52 · 348 阅读 · 0 评论 -
【题解】codeforces 843D - Dynamic Shortest Path 最短路
题解学到了跑最短路的新姿势:当最短路<=n时,我们可以分层dij,这样总复杂度是O(n + m)的。我们从距离为0-n开始更新,这样就不用堆维护了,思路很好想。所以以后不止边权为1可以bfs求最短路。只要保证最短路比较小,就可以线性求了。这种思路很常见。比如弦图求完美消除序列的时候用链表维护。还有只有+1,-1的修改的数据结构注意这道题每次修改c条边,最短路变化=min(c,n)。...原创 2020-02-02 14:57:32 · 222 阅读 · 0 评论 -
【知识点小结】关于图论的性质和技巧
图的计数技巧对度数根号n分治统计三元环个数:O(m* sqrt(m))只在标号最大的点处统计,注意三元组必须严格有序,否则会算重!把三元环分成两类:最大点为大点,直接枚举这个大点和任意一条边最大点为小点x,枚举该点x的出边,标记所有点。如果出边e[i].to为大点,则枚举x的另一出边,否则枚举e[i].to的出边例题ull solve4(){ //三元环 ull res = 0;...原创 2019-02-13 21:08:00 · 717 阅读 · 0 评论 -
最小生成树各类题总结
最近遇到了很多不同的最小生成树套路n^2条边的最小生成树这类题主要利用边权的特殊性质,贪心的优化枚举过程这种贪心必须严格基于MST的性质,不能想当然的猜!主要应用:一个环上最大的边一定不再最小生成树上tpye1 xor或者and为边权按位贪心,可以发现这一位是0/1把点分成两个集合,而集合内或者集合间的边边权差异很大or还没有想到好的做法,因为or在0/1和1/1间的边边权是一样的...原创 2019-01-14 22:33:30 · 659 阅读 · 0 评论 -
bzoj4144: [AMPPZ2014]Petrol 最短路经典问题
链接Description给定一个n个点、m条边的带权无向图,其中有s个点是加油站。每辆车都有一个油量上限b,即每次行走距离不能超过b,但在加油站可以补满。q次询问,每次给出x,y,b,表示出发点是x,终点是y,油量上限为b,且保证x点和y点都是加油站,请回答能否从x走到y。Input第一行包含三个正整数n,s,m(2<=s<=n<=200000,1<=m<...原创 2018-10-26 22:04:56 · 444 阅读 · 0 评论 -
KM模板
//KM算法//解决二分图最大权匹配(如果两边点数不一样加虚点,不存在的边边权为0)//最小权将边权取负//O(n^3)//比费用流快#pragma GCC optimize(3)#include<bits/stdc++.h>#define rep(i,a,b) for(int i=a;i<=b;++i)#define repd(i,a,b) for(int i=...原创 2018-08-09 20:27:36 · 314 阅读 · 0 评论