用兩個指針(一個當終點一個當起點)以線性的時間找出找出最長連續不重複子序列,然後每次選擇最優解,把選過的設為-1,循環k遍之後就是答案了
不太清楚你怎麼實作的,但如果我理解沒錯,我覺得應該是每次找出最長的區間,然後如果很多個這樣的區間就選最左或最右的,把這個區間「吃掉」,接著再繼續做
上面這個做法,在以下的測資會出錯 :
10 2
4 5 1 2 3 4 5 6 2 3
程式第一次會拿中間 $6$ 個,變成下面這個
4 5 XXXXXX 2 3
第二次拿左邊或右邊 $2$ 個,算出答案是 $8$
但最佳解法是左邊一半、右邊一半
4 5 1 2 3 | 4 5 6 2 3
最佳解是 $10$
如果版主有看到這個訊息,發現我理解是錯的,希望能回覆一下,謝謝!