2011年12月5日 星期一

PKU2533-Longest Ordered Subsequence

題目:http://poj.org/problem?id=2533
有n個非負整數(1<=n<=1000)
求最長嚴格遞增子序列(LIS)
和1887求最長嚴格遞減是姊妹題


程式碼:http://codepad.org/GZ5vu6FV
(discuss很奇怪的說n=0要輸出1,但我看不這樣也會AC阿…)
n不大,O(n^2)算法有用武之地
試了一下二分搜O(nlgn)的做法也不難寫
這裡定義DP[0]=-1,DP[x]=y意指:
目前所有長度為x的遞增子序列裡,第x項最小的是y

這是對初學比較難懂的地方,
因為這個數組存的值並不是目前找到的LIS
而是一個找LIS的"輔助數組"

至於定DP[0]=-1是一個無限小的數字(這裡只會有0...10000,所以可以用-1)
所以同理對1887的話,必須把DP[0]設成40000之類的數字(比出現的所有數字都大)

(可以猜猜看如果1887把DP[0]=-1答案會變成多少?)

沒有留言:

張貼留言