图论模拟

【简述情况】:

\(110/400\)

\(20 \leq rank\)

\(AC:1\)

有思路但未\(AC:0\)

无思路\(:3\)

\(LUOGU4304\)二分图最大匹配
\(LUOGU1642\)树转序列,\(0/1\)分数规划
\(BSOJ3959\)最小割
\(LUOGU4553\)上下界费用流

【第一题】

\(luogu4304\)

题意:给定棋盘上一些可放置棋子位置,其中在放置棋子的日字八个位置不能放棋

思路:套路黑白染色后求最大匹配

注意:时间上:用\(Dinic\)而不能用\(Hungary\)

空间上:开\(2*n*n\)

\(Code\)

【第二题】

\(luogu1642\)

题意:求:一个\(n\)点有\(v,w\)点权的树上,点数为\(n-m\)的子树中\(\frac{\sum w_i}{\sum v_i}\)最大的值

思路:看到分数最值的题应该自然想到\(0/1\)分数规划,顺便温习一下其推导过程

另设\(\frac{\sum w_i}{\sum v_i}=\lambda\)

则$\sum w_i-\lambda \ast \sum v_i=0 $

令$g(x)=max(\sum w_i-x \ast \sum v_i) $

可证明\(g(x)\)单调递减

则对当前二分值\(mid\)对\(g(mid)\)分三类

  • \(g(mid)>0 <=> mid<\lambda\)

  • \(g(mid)<0 <=> mid>\lambda\)

  • \(g(mid)=0 <=> mid=\lambda\)

即可二分解决

而对于确定的\(mid\)解决\(g(mid)\)被转化成了树上的资源分配问题(背包)

可以设\(dp(x,i)\)表示以\(x\)为根子树(\(x\)要取)中取\(i\)点的最大值

则\(dp(x,i)=max(dp(y,j)+dp(x,i-j))(y\mid y\)为x儿子\(,j\mid 1\leq j \leq i)\)

相同于背包\(dp\)的j要倒序枚举才正确

\(Code\)

【第三题】

\(BSOJ3959\)

题意:给定一个边带正权的\(M\)边\(N\)点连通无向图\(G=(V,E)\),加入一条边\((u->v)\)边权为\(l\),那么需要删掉最少多少条边,才能够使得这条边既可能出现在最小生成树上,也可能出现在最大生成树上?

思路:先举最小生成树的例子:考虑最小生成树上链接两个联通块间的最短边
因此,如果加入\((u->v)\)这条边连接\(u\)所在集合\(U\)与\(v\)所在集合\(V\)的边一定小于等于\(l\)不然就违背最小生成树定义,因此需要删去的边是权值\(<l\)并连接\(U\) \(V\)两个联通块的边,令其最小即是\(U\) \(V\)间最小割定义

最大生成树亦然,只需选出权值\(>l\)并连接\(U\) \(V\)两个联通块的边

步骤:

1.选出权值\(<l\)并连接\(U\) \(V\)两个联通块的边,求\(s=u->t=v\)最小割

2.选出权值\(>l\)并连接\(U\) \(V\)两个联通块的边,求\(s=u->t=v\)最小割

\(Code\)

【第四题】

\(luogu4553\)

题意:过于复杂,查看原题

思路:这道题我们考虑上下界费用流建模。

首先将每个点拆成\(a_i\)和\(a_i'\),分别用来限制入度\((\leq m)\)出度\((=v_i)\)

超级源点向\(a_i\)连一条容量为\(v_i\),费用为\(0\)的边;

\(a_i'\)向超级汇点连一条容量为\(v_i\),费用为\(0\)的边;

源点向\(a_i\)连一条容量为\(INF\),费用为\(0\)的边;

\(a_i'\)向汇点连一条容量为\(INF\),费用为0的边。

对于原图一条\(x->y\),费用为\(w\)的边:

\(x'\)向\(y\)连一条容量为\(INF\),费用为\(w\)的边。

\(Code\)

【小结】

这次考了\(3\)道网络流题,\(1\)道\(0/1\)分数规划问题

说明两个问题:

1.知识掌握不够熟练 : \(0/1\)分数规划问题讨论思路

2.思路不够宽 : 最小割转化思想

对过去知识要灵活运用,不要局限套路做法,分析题目本质,步步踏实才是王道

【推进练习】

上下界费用流:\(BSOJ5313\)

\(T4\)类似建图:\(BSOJ3303\)

\(0/1\)分数规划两题:


05-28 11:17