P2766 最长不下降子序列问题(网络流)

P2766 最长不下降子序列问题

  1. 求解LIS长度k
  2. 求解长度为k的不下降子序列个数,并且一个数只能使用一次
  3. 求解长度为k的不下降子序列个数,第一个数和第n个数可以使用任意次

首先利用dp可以求解出以每个点开始的最长不下降子序列,然后可以类似于最短路图,我们也可以建出一个状态转移图,然后现在上面每一条从起点到终点的路径都代表了一个最优转移,那么我们只需要拆点然后跑最大流即可,第三问可以类似处理将第一个数和第n个数的限制去掉。

另外我们可以类似地处理一个问题,就是最少去掉几个点能够使得LIS的数量变化,那么我们就可以利用最小割的模型来处理这个状态转移图了。

posted @ 2021-01-19 10:20  dinlon  阅读(111)  评论(0)    收藏  举报