图论选做

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~\)合法,否则不合法,最后取最小的合法答案即可。
posted @ 2023-07-27 14:24  ricky_lin  阅读(11)  评论(0编辑  收藏  举报