摘要: 先通过dp求出LIS假设为m,也就是经典的LIS问题。就求出了以点i为终点的LIS,即d[i];然后题目要求输出所有点都不重合的LIS的方案。可以通过最大流来求解。可以想到一个从s到t的流对应于一种方案。LIS的终点很显然只能是d值为m的点,所以在模型中只把d值为m的点向终点t连一条有向边。任何一个LIS的起点一定是d值为1的点所以s向d值为1的点连一条有向边。然后对于每一个点i,把j<i且的d[j]+1=d[i],从j想i连一条边,这样每一条从s出发的路都是一个上升子序列,如果到达终点是t则是一个最长上升子序列,然后因为点都只能用一次,所以设定点的容量为1,这样得到的模型一个流就是最终 阅读全文
posted @ 2012-12-15 18:45 LJ_COME!!!!! 阅读(140) 评论(0) 推荐(0)