随笔分类 - 图论
摘要:gate 有向图求最短路,需要进行三种操作: 点向点连边 点向区间连边 区间向点连边 用线段树优化建图可以解决。 建立两棵线段树,一棵存入边,一棵存出边 入边: 出边: 所以线段树看起来应该是这样子的: 线段树内的边权为$0$。 code #include<cstdio> #include<iost
阅读全文
摘要:单源最短路 \(Dijkstra\) 堆优化,用距离最小的点更新其他节点。 不能处理有负权边的图。 \(O(mlogn)\) void dijkstra(int s) { priority_queue <pair<int,int>,vector<pair<int,int> >,greater<pai
阅读全文
摘要:gate 差分约束系统用来解决: 给出$n$个变量$x_1...x_n$,$m$个形如$x_i-x_j \le k$($k$为任意常量)的式子, 求$x_1...x_n$的一组可行解。 将式子变形为$x_i\le x_j + k$,发现刚好符合三角形不等式$dis[v]\le dis[u]+w[i]
阅读全文
摘要:gate 用时:70min 题目大意:给定$N$个点,$M$条边的无向图,每条边只能走一次,求$1\rightarrow N \rightarrow 1$的最短路径长度。 居然是费用流! 建图: 超级源点$s$和超级汇点$t$。 \(s\rightarrow 1,\ N\rightarrow t\)
阅读全文
摘要:gate 用时:debug时间90分钟。 先读m再读n 我是傻逼(1/1) 题目大意: 有$m$个房子,$n$个顾客。第$i$个房子里有$a_i$只猪;第$i$个顾客可以买至多$b_i$只猪,且可以打开房子$c_1,c_2,...c_j$,这些同时被打开的房子中,剩余的猪的可以互相转移。求最多卖出的
阅读全文
摘要:gate 用时:看了题解之后20min左右吧... 给一个$N\times N$的网格,有$k$个障碍物,每次可以消灭一行或一列的障碍物,问至少几次可以清空。 把横、纵分为两个点集,每个障碍物$(i,j)$即在$i,j$连一条边。 \(Konig定理\):最小覆盖数 = 最大匹配数 求二分图匹配即可
阅读全文
摘要:gate 用时:断断续续地debug,大概用了120min? 板子题. 求将一个无向图变成边双联通图最少的加边数. 结论:设原图叶子节点(入度为1的)的数量为$x$,答案即为$(x+1)/2$ 证明:将叶子节点两两相连. 首先$tarjan$求出所有强连通分量,只保留割边. 缩点后判断有多少入度为1
阅读全文
摘要:gate 用时:大概60min 睡前随便水一发博客,摸了 有向图,一个点向其他点连边(传递信息)。 问:1.至少选多少点作为源点,使所有点都能收到信息。2.至少连多少边,使任选一点作为源点,都能使所有点收到消息。 显然每个强联通分量内的点可以互相到达,所以先缩点。 1的答案即为入度为0的点的个数。
阅读全文
摘要:gate 保证有欧拉回路,输出路径 这道题的话是字典序,实现的时候从1到n枚举就好了,先不管它qwq 找到度数为奇数的的点作为起点(没有的话就任意一个), dfs,回溯时把点压进栈。 为什么不能遍跑dfs边压?考虑这张图: 边跑边压的结果是1,2,3,2,4,5,而正解(回溯)是1,2,4,5,2,
阅读全文
摘要:gate tarjan判环,若一对夫妻在同一scc中则不稳定。 构造成有向图, 当前婚姻状况 女→男 连边,曾经交往的 男→女 连边。 代码如下 #include<cstdio> #include<iostream> #include<cmath> #include<cstring> #includ
阅读全文
摘要:N(1 ≤ N ≤ 1,000)个不同颜色的不透明矩形被摆放在了一个白色的宽A高B(1 ≤ A,B ≤ 10,000)的网格上,矩形的边与网格的边平行。所有的长方形都放置在网格内,所以我们会看到不同形状的各种颜色。 坐标系统的原点(0,0)设在这张白纸的左下角,而坐标轴则平行于网格边缘。求最后能看到
阅读全文
摘要:传送门 作为给dtx的妹子讲题的交换他给我讲的 果然线段树最可爱了w 扫描线可以用来求矩形的面积并… 一个平面上有一些有重叠的矩形,求他们的并集的面积。 直接放网上的图了x 对于每个矩形,将y坐标拆成两个修改操作(插入和删除),从下到上排序; 将x坐标unique离散化,从左到右排序,用线段树维护切
阅读全文
摘要:传送门 我记得这题我去年写了树的做法,而且好像是用链前存的图xp总之还得了些分 树的部分,贪心+dfs即可。 基环树的部分,n^2暴力枚举断哪一条边...可以到88‘ 加上快读,去掉vector...总之我乱搞优化到了96' 吸氧过了... 正解似乎应该用tarjan判环,据说是nlogn (等会去
阅读全文
摘要:传送门 为了方便以后抄自己代码 如果一个点入队次数超过n次,说明有负环
阅读全文
摘要:传送门qwq 刚学会网络流,把网络流24题按难度sort一下,第一个蓝题就不会...(某二分图匹配除外) 于是又跑去学了最小费用最大流。 听说网络流的难点就在于建图,似乎感受到一点了... 这道题和飞行员匹配一样,需要用到超级源点和汇点。 既然要平均分配,那么首先可以先算出平均值。 高于平均值的仓库
阅读全文
摘要:传送门 最小费用最大流,就是在求最大流的前提下,使选出的路径费用最小。 每条边除了容量w[]外,还要记录一个单位流量费用co[]。 其实就是$dinic$的$bfs$和$SPFA$同时进行, 每次更新增广路时,保证选择的一定是费用最小的一条路径。 ($paopo$说这个用不了当前弧优化,所以我就没用
阅读全文
摘要:传送门 二分图匹配模版题… 不过既然作为网络流24题,当然是可以用网络流做的qwq 自己规定一个源点和一个汇点,将源点-所有外籍飞行员、所有英国飞行员-汇点、输入的外籍飞行员-英国飞行员连容量为1的边, 跑dinic,最后检查不包括s,t的边,若反向边有容量,则输出这条边所连的两个飞行员 因为源点和
阅读全文
摘要:传送门 NOIP之前,我绝对不学网络流。 ——我 网络流可以解决这样一类问题:给定一个有向图,每条边有一个流量上限,求从源点到汇点所能运输的最大流量。 解决这类问题的一种算法叫做$dinic$。 一些性质 对于任意一个时刻,设c(u,v)为容量,f(u,v)为实际流量,则整个图G的流网络满足3个性质
阅读全文
摘要:传送门 二分图:设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。 二分图匹配:给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条
阅读全文
摘要:gate 求出一条s到t的路径,使得这条路径上经过最高温度最小的前提下,总长度最短。 什么最大值最小很容易想到二分...就每次枚举最高温度然后在这个温度下跑最短路看是否连通。 但是这道题也可以用最小生成树的算法来做qwq 想要温度尽量小,就以温度为关键字,跑一遍最小生成树,就得到了使s,t连通所需要
阅读全文