图论选做
P3465 [POI2008]CLO-Toll [基环树] [并查集] [提高+/省选-]
考虑依照题意,只要有一个环并且图连通,就能满足每个点在一些边定向后,都有为1的入度。
即选择一些边构成一个外向基环树,就可以满足题意
solution:
- 先跑出一棵生成树
- 找一条非树边(这样就能找到一个环),并对这个环定向
- 然后依次对其他点进行定向
P1640 [SCOI2010] 连续攻击游戏 [二分图匹配] [基环树] [提高+/省选-]
考虑第一眼看过去,有点像网络流里面的最小割
,便有了以下思路1,2;
考虑后面回顾整理时和上面这道题有点像,便有了思路3;
solution1(网络流):
- 考虑将一个属性拆成两个点,一个装备的两个属性连边(连双向边),源点\(~S~\)向所有左部点,所有右部点向汇点\(~T~\)连边
- 然后跑网络流,\(~S~\)出流的顺序是从\(~1\sim n~\)的左部点,如果\(~S~\)连向第\(~i~\)个点的边没有流,那么答案为\(~i-1~\)
时间复杂度:\(O(200\times N)\)
solution2(二分图匹配):
- 考虑建图类上:将一个属性拆成两个点,一个装备的两个属性连边(连双向边)
- 然后从左部点的\(~1~\)号点开始
match
,一直到不能找到增广路为止
时间复杂度: \(O(10000\times N)\) (好像可能会炸,但是真的能过耶,而且还跑得挺快的,最长122ms)
solution3(基环树):
- 实际上可以是装备为边,不用拆点然后建图
- 然后我们可以知道,和上面这道题一样,都是边的定向问题,一个联通块内,只要有环就都可以选。没有环就舍去最大的那个
时间复杂度: \(O(N + 10000)\)
P1525 [NOIP2010 提高组] 关押罪犯 [二分答案] [并查集] [普及+/提高]
考虑最大值最小(这么典的提示为什么一开始没看到呢!可能是题目的迷惑性确实很强,也可能是太久没做二分图的题了)
solution:
- 二分答案
- 考虑把所有的\(~\leq mid(二分值)~\)的边连上(其实可以不用真的连),然后并查集维护联通块个数,\(~\leq2~\)合法,否则不合法,最后取最小的合法答案即可。
本文来自博客园,作者:ricky_lin,转载请注明原文链接:https://www.cnblogs.com/rickylin/p/17584825.html