紫书第11章图论模型与算法-习题解题总结

《算法竞赛入门经典》中第11章的题目

题目目前还没看完,先留坑,慢慢填

做题情况
题目 1 2 3 4 5 6 7 8 9 10 11
状态 + + +1 -10 0 0 + +2      
题目 12 13 14 15 16 17 18 19 20 21  
状态 +     + + +          

一、题目概览

  1. 很平常的一道Floyd..直接暴力算就好了
  2. 很平常的一道Dijkstra或SPFA
  3. 最大流的模板题...但是书上的数据给错了,1到2容量是20...
  4. 无向图的点连通度,用的是拆点法.这道题比较有意思,后面会有总结。
  5. 表达式树的大模拟。。
  6. 又是一个大模拟。。
  7. Dijkstra,和例题11类似,要考虑当前状态,但并不难写
  8. 最重要的是星号只能出现一次,只能代替一个字符。因此我们可以把原来的模板拆开,产生至多2000个串,可以用星号代替的串之间连一条边,可以证明我们生成的是二分图(按照奇偶性易于证明没有奇环),然后题目就变成了二分图匹配,跑一个最大流就好了。这是我难得完全自主做出来+对拍的3000+Byte的题。。这道题花了我好长时间调试。。
  9. 未做
  10. 未做
  11. 未做
  12. 都提示到某个数据结构了,那当然是并查集了!把询问逆序处理,相当于不断向并查集加入元素,模拟记录,逆序输出答案即可
  13. 未做
  14. 未做
  15. 非常清新的构造题,思路类似于贪心,先把所有的边权值和相加,再不断合并。对于每个点,统计出与它相连的边权值总和为sum,最大权值的边权为mx,显然最好的情况就是合并后减少min(sum/2, sum-mx),而可以玄学证明这是可以达到的。(实际要归纳什么的,并不好证)
  16. 与15题类似,这次是统计对于每个点,包含它的子树的大小。设某个点子树大小为k,则它与父亲相连的边最多被经过2\times min(k,n-k)次,可以玄学证明这是可以达到的,然后统计答案就可以了。
  17. 也是一道神构造。设叶子节点数量是m,则至少连(m+1)/2(下取整)条边。构造方法是设half=m\div 2,然后连接(1,1+half),(2,2+half),...
  18. 未做
  19. 未做
  20. 未做
  21. 一道很有意思的题,本来看到行列,以及对行列的操作,以为说不定是二分图匹配(受矩阵解压例题影响),结果完全不是!居然是差分约束这个新概念!根据题目列出一系列一次的不等式组,然后建图,用SPFA找最短路/最长路,顺便判断负环,有负环则无解。有空一定要写一写代码。

下面就是对于遇到的新的知识点和方法的总结了

二、点连通度与边连通度

推荐文章点连通度与边连通度的求解。连通度的定义就很容易让人想到最小割,那么怎么把这两者结合呢?总结一下就是下面的方法:

  1. 边连通度看起来就是裸的最小割模型了,但是源点和汇点是需要注意的,它们是可以任选的。可以$O(n^2)$暴力枚举源点汇点,但是实际只需固定源点枚举汇点就行了,具体见推荐的文章。
  2. 点连通度。其实只需要考虑有向图,无向图每条边可以拆成两个。核心的思想是把每个点拆成两个,分别接受从这个点出发的边和到达这个点的边。如下图,带一撇的保存入边,带两撇的保存出边,入边需要和出边连一条边。如果把某个点(如点$O$ )去掉了,我们就把 $O{}'O{}''$ 的边去掉,这样从 $ABC$ 到达 $O$ 的边只能进入 $O$ 却出不去,从 $O$ 到 $EF$ 的边变成凭空冒出来的了,因此相当于与 $O$ 有关的边都没有用了,例如$AE$就被隔离了。我们只要统计最少删掉几个这样的 $O{}'O{}''$边就行了,但是会不会误删题中给定的边呢?我们只要规定图中给定的边边权无限,而$O{}'O{}''$这类的边边权为1就可以完美解决。
    但是这样做源点汇点该怎样处理呢?和上面类似,但是一定要注意源点不能选类似$O{}'$的,汇点一定不能选类似$O{}''$的,因为这样做会导致最小割永远是 1.

    404

 三、差分约束系统

待更新。。推荐文章差分约束系统

猜你喜欢

转载自blog.csdn.net/qq_41255467/article/details/82011751