[POJ 2289]

Jamie’s Contact Groups

二分 + 最大流

输入为n、m,分别表示有n个点,每个点可以属于m种分类里面的某几种,将n个点分类(使每个点仅属于某一类)后,设最大的类里含有g个点,目标就是最小化g。

模型很简单,源点到n个点有容量为1的边,n个点到各自的分类有边,m个分类到汇点各有容量为g的边。然后就是二分g的值,每次用网络流判断是否可行。

但是……到这里明明就很清晰的思路,就是给我无限TLE……在明确其他部分都没得改进后,发现是网络流算法本身太慢……一直以来都只会用EK,而可能由于做过的题目都太水了……竟然都没有被卡过TLE。这次总算栽跟头了。于是,根据这篇文章学了一下ISAP,然后用自己的数据结构来实现也很简单,一下下就AC了: