CSES - Johdanto

Tämän viikon tehtävissä keskeisessä roolissa on tietorakenne segmenttipuu. Saat tietoa segmenttipuusta lukemalla KKKK:n luvun 8.

Java-ohjelmoijat:

Luokasta IO.java on nyt käytössä uusi versio, joka on selvästi aiempaa nopeampi. Kun lähetät koodia CSES:ään, tämä luokka lisätään mukaan automaattisesti, eli sinun ei tarvitse lähettää sitä itse oman luokkasi yhteydessä.

Vinkit

Kaikissa tehtävissä segmenttipuu auttaa. Kisakoodarin käsikirjan lisäksi toinen hyvä esitys segmenttipuista on
http://www.cs.helsinki.fi/u/sysikask/oh2/segmenttipuu/

Katso myös segmenttipuuvisualisaatio.

Lumisade

[hint]Säilytä segmenttipuussa lumimäärien muutoksia vierekkäisten talojen välillä (Kisakoodarin käsikirja, luku 8.4). Voit myös tehdä muunnelman segmenttipuusta, joka tukee välien muuttamista ja yksittäisten arvojen kyselyä.[/hint]

Soittolista

[hint]Voit binäärihakemalla selvittää luvun d siten, että summa kappaleiden k,\ldots, k+d pituuksista on x. Summien kyselyyn voit käyttää segmenttipuuta. Tehtävään löytyy myös segmenttipuun rakennetta hyödyntävä tehokkaampi ratkaisu.[/hint]

Nakkikioski

[hint]Tee segmenttipuu taulukolle, johon laitetaan jonottajan kohdalle 1, mikäli hän on vielä jonossa, ja 0 jos hän on lähtenyt.[/hint]

Hintavertailu

[hint]Tallenna segmenttipuuhun alipuun minimin lisäksi tieto siitä, montako kertaa se esiintyy.[/hint]