摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3998 题目大意是:给你一个数列,要你求最长的上升子序列,并且求最多有几个,且每个数只能在每个子序列中出现一次。对于第一问题很容易用DP解决,那么第二个问题,如果每个数可以出现多次的话,DP也很容易解决,但这里必须只能出现一次,否则的话就得判重,复杂度O(n3)。把问题简化一下,就是求长度为s的点不想交的路径有多少条,即每个点的容量为1(拆点),dp值相差为1的建立边,增加源汇点s、t,s向dp值为1的建立边,dp值最大的向t建立边,然后求最大流。 在网上看到这题贪心也可以搞,具体做法就是从... 阅读全文
posted @ 2012-12-11 09:42 zhsl 阅读(460) 评论(0) 推荐(0) 编辑