DilWorth定理内容:
对于任意有限偏序集,其最大反链中元素的数目必等于最小链划分中链的数目。
反过来,对于任意有限偏序集,其最长链中元素的数目必等于其最小反链划分中反链的数目。
例题:给一个序列,每次取走一个最长上升子序列,问至少要几次。
相当于求最小链划分。
那么,求出反图的最长链。
显然,最长不上升子序列的长度就是答案。
先AC自动机建图。
问题变成:给一个DAG,若a->b,b->c,则a->c。
求它的最大独立集。
直接套用DilWorth定理。
最小链划分使用二分图匹配。
构造方案:
求出这个二分图的最大独立集。
若点x在二分图的两边都被选了,那么选择x。
使用dinic,在残量网络上bfs求最小割即可。