作者pinglunliao (王者:一条孤独的不归路)
看板Prob_Solve
标题Re: 最长递增子序列
时间Thu Nov 16 17:47:20 2006
以 16 12 8 4、15 11 7 3、14 10 6 2、13 9 5 1 序列为例
16 12 8 4 | 15 11 7 3 | 14 10 6 2 | 13 9 5 1
先切出递减的子序列如上图
然後分别对每个子集合内的元素做可以最佳子序列长度的选择
16 12 8 4 | 15 11 7 3 | 14 10 6 2 | 13 9 5 1
best length 1 1 1 1 | 2 2 2 1 | 3 3 2 0 | 4 3 2 1
以 3 这个数字来讲,它在第二个集合内
但是它没有比第一个集合内的任一个数字(元素)来的大
所以它所能组成的最长子序列就只有它自己 3 (长度为 1 )
再举 10 为例,它在第三个集合内,但它有比第二个集合内的元素 7 来的到
所以 10 的最佳长度为 2 ( 7 的最佳长度)+ 1( 10 自己)
然後由 右 向 左 挑出长度为 4 的最大值 13 ,再向左找出长度为 3 且小於 13 的数
再找出长度为 2 的 、长度为 1 的 会得到 4 7 10 13
目前我用这个做法还没有找到反例的~~~
--
蛰伏秋山待枫红,青临洛水无云彩
麒麟降世多磨难,江郎愿使尽长才。 <卧江子>
http://www.wretch.cc/blog/pinglunliao/ 我目前常用的个人网志
http://pinglunliao.blogspot.com/ 以前在用的
http://blog.yam.com/pinglunliao/ 申请好玩的
http://blog.xuite.net/pinglunliao/pinglunliao/ 快癈了!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.130.34.88
1F:推 march20:没有仔细看, 不过确定你的 5 下面应该放 2 才对 11/16 19:05
※ 编辑: pinglunliao 来自: 140.130.34.88 (11/16 20:25)
2F:推 pinglunliao:谢谢楼上的指正 11/16 20:25
3F:推 pinglunliao:今天才发现切割的动作是多余的... 11/18 00:09
4F:推 godgunman:O(nlogk)的做法, 直接输出就是和最大了 01/08 17:16