W tym artykule prezentuję rozwiązania trzech zadań ze SPOJa. Wszystkie pochodzą
z (dość długiego) cyklu "Answer these queries" i (mimo dość podobnie
wyglądających sformułowań) wymagają połączenia kilku różnych, i to dość
nietrywialnych, pomysłów. Ze względu na zróżnicowany poziom trudności lekturę
polecam zarówno początkującym, jak i starym wyjadaczom.
Na wstępie pewnie warto powiedzieć, jakimi zadaniami będziemy się zajmować. Oto
one:
- GSS1,
- GSS3,
- GSS2.
Wszystkie polegają na przetwarzaniu zapytań dotyczących ciągu liczb. Ogólny
schemat jest taki: dany jest ciąg N liczb
całkowitych
![$ A[1] \ldots A[N] $](/files/tex/9a09a562c92f9f6a527011410fa8dd8f389dc5a2.png)
oraz zapytania postaci

,

. Odpowiedzią na zapytanie powinna być wartość
najlepszego podciągu ciągu
![$ A[x] \ldots A[y] $](/files/tex/526e8eb0eca771ac83b5855ec2db5acc7269012d.png)
, gdzie najlepszy to taki, który
ma największą wartość. Bardziej formalnie:
To, jak liczymy wartość podciągu
, zależy od zadania. W
przypadku GSS1 i GSS3 jest to po prostu suma elementów, a w GSS2 suma
różnych elementów. Aby urozmaicić (tudzież utrudnić) nam życie, w GSS3
oprócz zapytań pojawiają się także żądania modyfikacji wejściowego ciągu A.
No dobrze, skoro znamy już problem, możemy zaczynać!
Poniżej znajduje się formularz do wysyłania rozwiązań zadań, których sformułowania pojawią się w dalszej części artykułu.
Nie możesz wysyłać i oglądać rowiązań tego zadania ponieważ nie jesteś zalogowany.
Zaloguj się lub
załóż konto.