关于无向图上的一些问题
来源:互联网 发布:没有在网络上发现mfp 编辑:程序博客网 时间:2024/06/08 04:50
前言
最近一直在刷联赛题目,遇到了很多无向图上的问题,就在此总结一下。
进入正题
第一类
就是一个无向图上,跑某两个点最短路,然后有些使用次数比较小的绕路方法(某些点连出去的边费用减免,抄捷径之类的)。
一个比较好的思想就是分层,每层跑一次最短路,从上层转移,spfa+slf的算法一般卡不掉(这算比较快的)。
还有些一次性连边跑最短路的要尽量避免(时间特别慢),会走到许多冗余的状态。
第二类
无向图上找一些权值平均值最大(或最小的环)。
这种总权除以数量的很经典是二分,然后就是判断负环(正环)问题。
这里可以用bfs版spfa+slf,判断一个点入队是否超过n次。
dfs的spfa一般情况下更快。
第三类
就是给出很多加边(或删边)操作,支持中途查询的问题。
首先一般都需要并查集,然后如果删边就时光倒流一下,维护些数据结构之类的。
现在说一类十分相似的问题。
给出一个无向图,然后加边,要维护一些最大权最小的问题,支持查询。
代表题目:
【NOI2014】魔法森林
等
通常就是排序,维护最小生成树上两点的最大值,把两点之间最大值修改。
用一道题题解结束吧。
【JZOJ4731】游戏
首先关于策略,如果两堆石子相同,先手必输,否则先手必赢。
证明:如果两堆石子相同,先手在某一堆取走多少石子,后手都可以在另一对中取走相同数量的石子,所以除非先手取完一堆中所有的石子,否则两堆都有石子。但此时后手可以把另一堆取完,所以后手必胜。
如果不同,那么先手可以把两堆石子取成相同的,那么此时的后手就是前面情况的先手,所以先手必胜。
然后,这题的一条路径的权值为这条路径包含边的边权最大值,两点之间路径为所有路径权值最小值,那么可以动态维护一个最小生成树。
具体操作:
加边时如果不形成环,那么直接加入,否则找到环上权值最大的边视情况替换掉。
查询就是树上两点路径最大值。
这可以用LCT维护,因为这题数据比较小,所以暴力维护也可以过。
隐形分割线
第三类问题思路不难,但代码一般有些长(并查集+数据结构维护最小生成树)。
总结
也没什么好说的了。
就这样结束吧。
- 关于无向图上的一些问题
- 关于无向图直径的一些思考
- [回忆向]关于有向和无向图连通性问题的yy证法
- 无向图的接合点问题
- 无向图的最大割问题
- 无向图的最小割问题
- 关于无向图中连通分量缩点的问题
- 关于尾注的一些问题-上
- 关于算法上的一些问题
- 关于求无向图的连通分量的个数
- 关于SSH无密登录出现的一些细节问题
- 关于无向图判断是否存在回路的方法
- 关于linux应用程序向嵌入式设备上移植的问题
- 无向图的最大割问题的实现
- 无向图的最大割问题的实现
- 关于无向图中环的研究
- 无向图求连通块的个数问题
- 求无向图的最短路径问题
- UDP协议的简单使用
- hashMap和Hashtable的区别
- codeforces 479A(Expression) Java
- 一年的职业生涯(留给以后的自己看)
- 机器学习之分类回归树CART
- 关于无向图上的一些问题
- Linux【网络编程】——I/O多路转接之Poll服务器
- Linux上安装mysql数据库
- bzoj2877 [Noi2012]魔幻棋盘 二维线段树
- ubuntu 通过命令行锁屏
- 研一这一年
- java学习笔记
- python下操作数据库
- 15th 【最短路 dijkstra】最小花费