我給了I(i) = [a_i, b_i] (1<=a_i<=b_i<=n)
的一些間隔I = {I(1), I(2), ..., I(m)}
。你可能認爲這些間隔覆蓋對方(對不起,我英文很差),所以沒有間隔,如{[1,5], [3,6]}, {[2,5], [5,7]}
。並且{[1,1], [2,2], ..., [n,n]}
必須包含在I.如何解決這個問題(選擇間隔)
假設C(i) = b_i - a_i + 1
。
我想找到{I(c_1), I(c_2), ..., I(c_k)}
彼此不重疊,C(c_1) + C(c_2) + ... + C(c_k) = T. (1 <= T <= n)
。
我能找到O(n*T)
使用子集總和問題的DP解決方案,我認爲它是NP,但我不確定。我可以優化多於O(n*T)
嗎?
歡迎來到堆棧溢出。你能告訴我們你到目前爲止做了什麼嗎? – Luca
查找是否存在一個間隔的子集,使得「C(d_1)+ C(d_2)+ ... + C(d_k)」僅是NP-Hard(子集和問題),並且解決它的一般方法是使用'O(mT)'DP解決方案,一個指數蠻力 – amit