再探网络流

昨天 CF1368H 的基础网络流部分我不会,今天 noi2019d1t3 的网络流我又不会。想当年大家都说我网络流很好来着,现在只需要两个题就足够把我击垮了。

于是再来做一些网络流题,或者是一些原来做过的题的回顾,以此总结一些经验。

流量限制的是最大值而非最小值,故当限制为最小值时考虑转化为最大值。

noi2019d1t3 序列,由于要求 \(a,b\) 的数量相同,故我们一定是选一个 \(a\) 就要选一个 \(b\),而限制同时选 \(a_i,b_i\) 的数量不少于 \(L\) 个,转化为 \(a_i\neq b_i\) 的数量不大于 \(K-L\) 个,弱化为随意选的不超过 \(K-L\) 个。然后就可以在这个图上找到每一种可能的流去反悔贪心,也就是模拟网络流。

相比于流,割的意义更加具体,限制也更好描述。

CF434D 这个题,如果你去想费用流你就输了。你发现在流的意义下很难描述一个数量关系,于是转而考虑割。由于要求最大值,我们把权值都取倒数然后加上 \(+\infty\)。对每个都建 \([l,r]\) 这些点,然后连边 \((S,l,+\infty),\forall i\in[l,r)(i,i+1,-f(i)+\infty),(r,T,-f(r)+\infty)\)。这样割掉 \((i,i+1)\) 就相当于选了 \(i\)。此时再来看 \(x_u\leqslant x_v+t\) 的限制,不妨转化为 \(x_u\geqslant x_v+t\) 的形式,发现在两条链之间连边恰能描述一个大于等于的关系。

https://codeforces.com/contest/434/submission/212038972

如果避不开上下界,那就用上下界吧。

记得很久以前有一个 hh 场,我写了个流,我觉得蛮对的,但是 wa 了,正解是上下界。

折腾了一下午,麻了,不知道为什么不对。但事实就是不对,我现在很烦,很烦!!!!!

流满一个割集就一定是最大流,这是错误的!!!

很反常识吧。我也这么觉得。但是伟大的皇子把它 hack 掉了。

posted @ 2023-07-05 16:13  syzf2222  阅读(79)  评论(1编辑  收藏  举报