Problem:
Podaliśmy tablicę A[]
o rozmiarze N
. Teraz daliśmy Q
zapytań, z których każda składa się z trzech zapytań całkowitą l,r,k
gdzie:jak znaleźć sumę do kth elementu posortowanej tablicy od l do r?
1<=l<=r<=N
1<=k<=(r-l+1)
1<=N,Q<=10^5
teraz, chcemy dowiedzieć się sumę zapisu do elementu k
z posortowane sub-macierzy z l
do r
.
Na przykład:
Niech N=6
i element tablicy będzie 5,1,7,4,6,3
And Q=1
gdzie l,r,k
być 2,5,3
.
następnie sub-tablica z index 2 to index 5
być {1,7,4,6}
po sortowaniu staje jak {1,4,6,7}
więc podsumować września k=3
termin jest równa (1+4+6)=11
więc odpowiedź 11
.
Próbowałem użyć sortowania każdej pod-tablicy, a następnie podsumowania, w najgorszym przypadku zajmuje ona złożoność czasu w postaci Q*N*log(N)
.
Proszę pomóc znaleźć lepsze rozwiązanie w zakresie złożoności czasowej mniejszym niż Q*N
w najgorszym przypadku.
Aby uzyskać wydajne rozwiązanie, spróbuj zrobić to za pomocą programowania dynamicznego. –
@SauravSahu, jak zaimplementować program za pomocą programowania dynamicznego? – user7534168
Powiązane: https://stackoverflow.com/questions/44396308/subarray-queries –