PO-Finalen 2023
Lösningsförslag
Inflation
Av: Johan Sannemo
Testfallsgrupp 1 (Alla tal är procentenheter)
Allmän lösning
Synonymer
Av: Johan Sannemo
Testfallsgrupp 1 (Alla ord på andra språket har två översättningar)
Allmän lösning
Brobygge
Av: Herman Lauenstein, Joshua Andersson
Vattenfall
Av: Ivar Källström, Joshua Andersson
Sågverket
Av: Nils Gustafsson
x0
x1
x2
v
D1
D2
D0
Testfallsgrupp 1 (N=1)
Det finns endast ett x vi måste hitta, x0
Insikt 1: Om vi queryar v=1 kan det endast finnas xi till höger
Lösning:
Testfallsgrupp 2 (N=2)
Att querya v=1 kommer ge oss 2st D, vi vet inte ordningen
Vi kommer antingen få x0 = 1 + D0, eller x0 = 1 + D1
Insikt 2: Det finns en punkt på v om och endast om det finns en nolla i D (edge case)
Insikt 3: Om det inte finns en nolla i D för querien v=1 måste alla xi > 1
Insikt 3 innebär att exakt ett Di kommer att minska med exakt 1 när vi går från v=0 till v=1
Lösning: querya v=1 och v=2, hitta det Di som “byts ut”. Detta Di är distansen v=1 till x0, och det andra Di är distansen från x0 till x1
x0
x1
D0
D1
v
Testfallsgrupp 3 (xi <= N+1)
Det finns xi utplacerade på N utav N + 1 möjliga punkter, det finns en “hålrum”
Lösning: Querya v=i för alla i där 1 <= i < N + 1. Om resultatet av vi inte innehåller en nolla finns “hålrummet” på plats i. Om detta inte händer finns “hålrummet” på plats N+1
Testfallsgrupp 4 (N <= 100, xi <= 10^4, N + 1 queries)
Insikt 4: om vi vet vad distansen mellan alla plankor är, och vi vet ett xi, kan vi hitta x(i+1) genom att querya v=xi + 1, och hitta den distansen Dk som har “försvunnit”. Då är x(i+1)=xi + Dk
Lösning:
Allmän lösning
Insikt 5: genom att querya v=1 får vi ut att xn = summan av alla Di
Detta sparar en query från testfall 4
Det finns lite specialfall man måste akta sig för
Hoppers
Av: Joshua Andersson
Hoppers
Problem: Givet en speciell riktad graf med saker i dess noder, hitta när kollisioner sker.
Grupp 1 (R * C <= 1000, N <= 1000)
Grupp 2 (N <= 1000)
Grupp 2 (N <= 1000)
Grupp 2 (N <= 1000)
Grupp 2 (N <= 1000)
Grupp 2 (N <= 1000)
Grupp 2 (N <= 1000)
Grupp 2 (N <= 1000)
4:
Grupp 2 (N <= 1000)
4:
Grupp 2 (N <= 1000)
4:
Grupp 2 (N <= 1000)
4:
4:
Grupp 2 (N <= 1000)
4:
3:
4:
Grupp 2 (N <= 1000)
4:
3:
Kollision!!
Grupp 2 (N <= 1000)
4: inte ok
3:
Grupp 2 (N <= 1000)
3:
Grupp 2 (N <= 1000)
2:
3:
Grupp 2 (N <= 1000)
3:
3:
Grupp 2 (N <= 1000)
3:
Kollision!!!!
Grupp 3 (Alla träd är linjer)
t=0
Grupp 3 (Alla träd är linjer)
t=2
Grupp 3 (Alla träd är linjer)
t=0
Grupp 3 (Alla träd är linjer)
anländer t=1
flytta bak 1 steg,
finns nåt där?
Grupp 4 (Inga uppåtpilar)
Grupp 4 (Inga uppåtpilar)
Ett givet element kan max byta sen log(n) gånger. Först i ett set av storlek 1,2,4,8,...
Grupp 5 (Full)
Roliga grafer!
Roliga grafer!
Roliga grafer!
Fraktaler (tack Simon)
Berguppdelning
Av: Olle Lapidus, Alexander Wahlsten
IOI-uttagningen
Internationella mästerskap
Uttagningsmoment
Teoriblad
Upsolving
Andra tävlingar
Onlinedomare
Kodsport