Ostatni raz znalazłem interesujący problem i utknąłem na nim.
Znajdź k-tą minimalną sumę każdego możliwego podzbioru
Podane n liczby a [1], ..., a [n] w porządku rosnącym i liczbie k (1 < = n, k < = 10^5).
Powiedzmy, że sortujemy każdy możliwy podzbiór danej sekwencji według sumy.
Musimy znaleźć sumę k-tego takiego podzbioru.
Na przykład
n = 4, k = 8
A = {2, 7, 8, 15}
1: {2} suma = 2
2: { 7} suma = 7
3: {8} suma = 8
4: {2, 7}, suma = 9
5: {2, 8} suma = 10
6: {7 8}, suma = 15
7: {15}, sum = 15
8: {2, 15}, suma = 17
...
k = 8, więc odpowiedź = 17 (podzbiór {2,15}).
Oczywiście możemy wygenerować każdy możliwy podzbiór i całe rozwiązanie działa w O (2^n * n), ale szukam czegoś bardziej inteligentnego - liniowego, lub przynajmniej O (nk).
Numery nieujemne? –
Tak, 1 <= a [i] <= 10^9. –
Jak rozróżniać porządek dla zestawów, które mają taką samą sumę? –