Uploaded by Radista Kriska

Pembahasan TROLLS 2024 Informatika

advertisement
TROLLS 2024: OSN-P SMA Edition
Bidang Informatika
Pembahasan Soal
TROLLS 2024 Informatika
Olympus Kesatuan Bangsa
A. Memakan Kue
Abridged Problem Statement
Diberikan array A dan B berisi N bilangan, buatlah suatu array D (1 ≤ Di ≤ N ) yang berisi K bilangan
yang memenuhi untuk 1 ≤ i < K berlaku ADi < ADi+1 dan jumlah BDi semaksimal mungkin.
Bagian Pemahaman
Kasus uji untuk menjawab soal A1, A2, dan A3.
N =7
A = [5, 4, 7, 4, 1, 1, 3]
B = [4, 3, 2, 7, 10, 2, 5]
Soal A1
Manakah diantara berikut yang merupakan urutan makan kue valid yang optimal?
a. 5, 6, 7, 4, 2, 1, 3 → tidak memenuhi syarat
b. 5, 7, 4, 1, 3 → jawaban benar
c. 5, 6, 7, 2, 1, 3 → tidak memenuhi syarat
d. 5, 7, 4, 2, 1, 3 → tidak memenuhi syarat
e. 5, 6, 7, 4, 3 → tidak memenuhi syarat
Soal A2
Berapa total kelezatan kue yang dimakan Pak Dengklek jika urutan makan kue nya optimal?
Solusi
Urutan makan kue = 5, 7, 4, 1, 3
Total kelezatan = B5 + B7 + B4 + B1 + B3 = 10 + 5 + 7 + 4 + 2 = 28
1
TROLLS 2024 Informatika
Olympus Kesatuan Bangsa
Soal A3
Jika ukuran kue ke-2 berubah menjadi 2 dan ukuran kue ke-3 berubah menjadi 2, berapa total kelezatan
kue dengan urutan makan yang optimal?
Solusi
Kasus uji baru:
N =7
A = [5, 2, 2, 4, 1, 1, 3]
B = [4, 3, 2, 7, 10, 2, 5]
Urutan makan kue = 5, 2, 7, 4, 1
Total kelezatan = B5 + B2 + B7 + B4 + B1 = 10 + 3 + 5 + 7 + 4 = 29
Bagian Pemrograman
Subsoal 1 (Mudah)
Tidak ada dua kue dengan ukuran yang sama.
Solusi
Karena semua nilai Ai berbeda, kita dapat memakai semua kue yang ada. Untuk mengeluarkan urutannya bisa dengan menggunakan array untuk menyimpan indeks kue yang memiliki ukuran i lalu mengiterasi ukurannya dari 1 sampai N .
Kompleksitas = O(N )
Subsoal 2 (Sulit)
Tidak ada batasan tambahan.
Solusi
Jelas jika terdapat dua atau lebih kue yang memiliki ukuran sama, kita hanya bisa memilih satu saja dan
akan optimal bila kita memilih kue yang memiliki nilai Bi maksimal. Sama seperti solusi subsoal 1, kita
gunakan array untuk menyimpan indeks kue yang memiliki ukuran i namun kali ini kita hanya ubah isi
array tersebut jika nilai Bi dari indeks kue yang baru lebih besar.
Kompleksitas = O(N )
2
TROLLS 2024 Informatika
Olympus Kesatuan Bangsa
B. Membangun Pilar
Abridged Problem Statement
Diberikan array A berisi N bilangan. Definisikan f (j, i) (1 ≤ j < i ≤ N ) sebagai selisih dari Aj dengan
Ai + Ai+1 + . . . + AN . Cari nilai minimum dari f (j, i) untuk semua pasangan (j, i) yang ada
Bagian Pemahaman
Kasus uji untuk menjawab soal B1, B2, dan B3.
N =8
A = [21, 10, 23, 14, 5, 12, 7, 9]
Soal B1
Jika Pak Dengklek memilih i = 7 pada langkah pertama, maka berapa indeks kayu yang harus dipilih Pak
Dengklek pada langkah kedua agar selisih tinggi pilar sekecil mungkin?
Solusi
Agar selisih sekecil mungkin maka nilai Aj harus mendekati A7 + A8 = 7 + 9 = 16.
Nilai Aj yang paling mendekati adalah 14, sehingga jawaban dari soal tersebut adalah 4.
Soal B2
Berapakah nilai selisih pilar paling kecil yang mungkin?
Solusi
Dengan pasangan (2, 8) kita bisa mendapatkan |A2 − A8 | = |10 − 9| = 1
Soal B3
Benar atau Salah: Terdapat persis dua nilai i pada langkah pertama yang bisa membuat selisih tinggi
pilar 2.
Solusi
Terdapat 2 pasangan yang bisa membentuk selisih 2, yaitu (7, 8) dan (4, 7). Terdapat 2 nilai i berbeda,
sehingga jawaban untuk soal ini adalah BENAR.
3
TROLLS 2024 Informatika
Olympus Kesatuan Bangsa
Bagian Pemrograman
Subsoal 1 (Mudah)
• 1 ≤ N ≤ 1 000
Solusi
Kita bisa melakukan brute force untuk semua pasangan yang ada. Brute force naif dengan kompleksitas
O(N 3 ) tidak akan tembus time limit, sehingga bisa di optimisasi menggunakan suffix sum.
Komplesitas = O(N 2 )
Subsoal 2 (Sulit)
Tidak ada batasan tambahan.
Solusi
Disini kita definisikan suff (i) sebagai Ai + Ai+1 + . . . + AN .
Perhatikan bahwa semakin besar nilai i, maka nilai dari suff (i) akan semakin kecil. Sifat monotonik ini
mengartikan bahwa kita bisa melakukan binary search pada suffix sum array.
Untuk suatu nilai j hanya terdapat maksimal dua i yang bisa membentuk selisih minimum, yaitu:
1. i terkecil dengan suff (i) ≤ Aj
2. i terbesar dengan suff (i) ≥ Aj
Perhatikan bahwa jika nilai j memiliki dua kandidat i yang optimal, sudah pasti nilai i tersebut bersebelahan. Sehingga untuk setiap j , kita bisa melakukan binary search untuk mencari salah satu nilai i dan
menggesernya untuk mendapatkan nilai i yang lain.
Kompleksitas = O(N log N )
4
TROLLS 2024 Informatika
Olympus Kesatuan Bangsa
C. Jatuhnya Majapahit
Abridged Problem Statement
Diberikan array A dan B yang berisi N bilangan. Buatlah K segmen [L, R] yang memenuhi syarat
berikut:
• L1 = 1, RK = N
• Li < Ri
• Ri + 1 = Li+1 (1 ≤ i < K)
Skor suatu segmen adalah max(AL , AR , BL + BR ). Keluarkan jumlah skor seluruh segmen yang maksimal dari seluruh konfigurasi yang ada.
Bagian Pemahaman
Soal C1
Benar atau Salah: Jika Pak Dengklek bisa memilih pasangan bilangan (p, q) dan mengurangi nilai pertahanan kerajaan Majapahit sebesar K , maka Pak Dengklek juga bisa memilih pasangan bilangan (q, p)
dan akan selalu mengurangi nilai pertahanan sebesar K juga.
Solusi
Karena soal tersebut mengikuti statement naskah soal, maka pasangan (p, q) berbeda dengan pasangan
(q, p) karena pada pasangan (p, q) menggunakan nilai Ap sementara pasangan (q, p) menggunakan nilai
Aq , sehingga jawaban soal ini adalah SALAH.
Kasus uji untuk menjawab soal C2 dan C3.
N =5
A = [6, 8, 5, 7, 4]
B = [2, 4, 3, 3, 5]
Soal C2
Berapa pengurangan nilai pertahanan jika Pak Dengklek memilih pasangan bilangan (1, 5)
Solusi
max(A1 , A5 , B1 + B5 ) = max(6, 4, 2 + 5) = 7
5
TROLLS 2024 Informatika
Olympus Kesatuan Bangsa
Soal C3
Pak Dengklek hanya bisa melakukan satu operasi saja kali ini. Pasangan bilangan manakah yang akan
menurunkan nilai pertahanan terbesar?
a. (1, 3) → 6
b. (4, 1) → 7
c. (2, 4) → 8
d. (5, 3) → 8
e. (2, 5) → 9
Bagian Pemrograman
Subsoal 1 (Mudah)
• 1 ≤ N ≤ 1 000
Solusi
Kita dapat menyelesaikan subsoal ini dengan melakukan Dynamic Programming secara naif. Anggap
dp(i) sebagai skor maksimum jika kita hanya mengganggap indeks 1 sampai i. Maka jawaban berada
pada dp(N ).
dp(i) = { dp(j) + max(Ai , Aj+1 , Bi + Bj+1 )}
1≤j<i−1
Base case dp(0) = 0 dan dp(i) = −∞ untuk i ̸= 0.
Kompleksitas = O(N 2 )
6
TROLLS 2024 Informatika
Olympus Kesatuan Bangsa
Subsoal 2 (Sulit)
Tidak ada batasan tambahan.
Solusi
Terdapat satu observasi penting, yaitu:
Misalkan [L, R] adalah salah satu segmen yang ada. Jika terdapat suatu bilangan j sehingga [L, j] dan
[j + 1, R] membentuk segmen yang valid, maka pasti akan lebih optimal jika kita memecah segmen
tersebut.
Bukti:
Jika skor segmen tersebut = AL , maka setelah dipecah, segmen [L, j] memiliki skor setidaknya AL dan
segmen [j + 1, R] memiliki skor setidaknya 1. Yang berarti total skor setelah dipecah bertambah setidaknya 1. Hal ini juga berlaku jika skor segmen awal adalah AR .
Untuk kasus skor segmen = BL + BR , setelah dipecah, segmen [L, j] memiliki skor tidak kurang dari
BL + 1 dan segmen [j + 1, R] memiliki skor tidak kurang dari BR + 1. Yang dimana total skornya lebih
besar dari segmen semula.
Karena pada solusi optimal segmen sudah tidak bisa dipecah lagi, maka setiap segmen pasti memiliki
panjang 2 atau 3. Maka solusi dp sebelumnya bisa dioptimisasi lagi menjadi
dp(i) = max{dp(i − j) + max(Ai , Ai−j+1 , Bi + Bi−j+1 )}
j∈{2, 3}
Kompleksitas = O(N )
Bonus: Coba selesaikan soal ini dengan batasan → −1 000 000 000 ≤ Ai , Bi ≤ 1 000 000 000
7
TROLLS 2024 Informatika
Olympus Kesatuan Bangsa
D. Perbaikan Jalan
Abridged Problem Statement
Diberikan tree dengan N vertex dengan setiap jalannya memiliki nilai sendiri yang awalnya tersembunyi.
Tiap vertex juga memiliki nilai sebesar jumlah nilai jalan yang masih nilainya tersembunyi dan terhubung
ke vertex tersebut. Nilai vertex pada awalnya juga belum diketahui. Jawablah Q query dengan format
berikut:
1. (1, X) nilai jalan bernomor X diketahui.
2. (2, X) nilai vertex X diketahui
3. (3, X, Y ) keluarkan "YA" jika nilai seluruh jalan yang dilalui dari X ke Y diketahui dan "TIDAK" jika
belum.
Bagian Pemahaman
Soal D1
Benar atau Salah: Jika rumah S hanya terhubung ke dua jalan maka jika terdapat informasi (2, S), harga
perbaikan dari masing-masing jalan yang terhubung dengan rumah S diketahui.
Solusi
Harga perbaikan dari masing-masing jalan bisa diketahui setelah informasi (2, S) jika vertex tersebut
hanya terhubung ke satu jalan saja, jadi pernyataan tersebut SALAH.
Soal D2
Benar atau Salah: Jika terdapat cara untuk berpindah dari rumah S ke rumah T menggunakan jalan
yang sudah diperbaiki maka seluruh rumah yang berada dalam perjalanan S ke T (tidak termasuk S dan
T ) terhubung ke setidaknya dua jalan yang sudah diperbaiki.
Solusi
Jika nilai seluruh jalan dari vertex S ke vertex T diketahui, maka seluruh vertex yang berada di jalan
mereka (kecuali S dan T ) setidaknya terhubung ke 2 jalan yang nilainya diketahui, yaitu jalan yang
menghubungan vertex tersebut dengan vertex sebelumnya dan jalan yang menghubungan vertex tersebut
dengan vertex setalahnya. Pernyataan tersebut BENAR.
Soal D3
Benar atau Salah: Jika jalan bernomor S terhubung ke rumah T dan jalan bernomor S adalah satusatunya jalan belum diperbaiki yang terhubung dengan rumah T , maka informasi (1, S) dan (2, T ) memberikan informasi yang sama.
8
TROLLS 2024 Informatika
Olympus Kesatuan Bangsa
Solusi
Tentunya jelas jika jalanan terhubung yang nilainya belum diketahui tersisa 1, pasti nilai rumah sama
dengan nilai jalan tersebut. Sehingga pernyataan tersebut BENAR.
Bagian Pemrograman
Subsoal 1 (Mudah)
• Ui = i; Vi = i + 1 (1 ≤ i < N )
Solusi
Terdapat beberapa solusi untuk subsoal ini, namun agar bisa mendekati solusi utama, kita akan menggunakan DSU (Disjoint Set Union). Jika terdapat suatu pasang vertex yang terhubung langsung dengan
jalan yang diperbaiki, maka kita buat kedua vertex tersebut menjadi satu connected component. Query
bertipe 1 dan 3 bisa kita selesaikan hanya dengan DSU.
Untuk query 2, kita perlu mengecek apakah vertex tersebut masih terhubung dengan 2 jalan yang nilainya belum diketahui atau hanya tinggal tersisa 1. Jika tersisa 1 maka nilai dari jalan yang tersisa bisa
diketahui.
Jangan lupa bahwa tiap kali terdapat query tipe 1 dan tipe 2, kita bisa saja membuka nilai dari jalan
baru, sehingga kita masih bisa meneruskan operasi pencarian nilai jalan baru. Hal ini bisa dengan mudah
dilakukan menggunakan BFS.
Kompleksitas = O(Qlog(N )
Subsoal 2 (Sulit)
Tidak ada batasan tambahan.
Solusi
Jika suatu vertex terhubung dengan hanya 1 jalan saja yang belum diketahui nilainya dan telah ada suatu
query tipe 2 dengan vertex tersebut, maka jalan yang tersisa dapat diketahui nilainya. Untuk mencari
tahu jumlah jalan yang belum diketahui nilainya untuk tiap vertex kita bisa menyimpannya dalam array.
Kita bisa menggabungkan solusi sebelumnya dengan observasi ini untuk mendapatkan AC .
Kompleksitas = O(Qlog(N ))
9
TROLLS 2024 Informatika
Olympus Kesatuan Bangsa
E. Kuliner Yogyakarta
Abridged Problem Statement
Diberikan DAG dengan N vertex dan M edge dan tiap vertex memiliki nilai Ai dan warna Ti . Diberikan
juga bilangan K . Buatlah suatu array P yang memenuhi syarat berikut:
• Terdapat cara untuk bergerak dari Pi ke Pi+1
• TPi ̸= TPi+1
• Ukuran array P tidak lebih dari K
Definisikan skor dari array P sebagai jumlahan APi
Bagian Pemahaman
Kasus uji untuk menjawab soal E1, E2, dan E3.
A = [7, 4, 4, 3, 5]
T = [3, 3, 2, 2, 4]
K=2
Soal E1
Berapa jumlah kelezatan maksimal yang bisa didapatkan Pak Dengklek?
Solusi
P = [1, 3]
Skor = A1 + A3 = 7 + 4 = 11
10
TROLLS 2024 Informatika
Olympus Kesatuan Bangsa
Soal E2
Benar atau Salah: Pak Dengklek dapat makan di warung makan 1 setelah makan di warung makan 2
Solusi
Karena T1 sama dengan T2 , pernyataan tersebut SALAH
Soal E3
Jika K = 3, maka berapakah jumlah kelezatan maksimal yang baru?
Solusi
P = [2, 5, 3]
Skor = A2 + A5 + A3 = 4 + 5 + 4 = 13
Bagian Pemrograman
Subsoal 1 (Mudah)
• 1 ≤ Ti ≤ 2
Solusi
Solusi subsoal ini sama dengan solusi penuh hanya saja nilai T nya lebih kecil.
Kompleksitas = O(M KT )
Subsoal 2 (Sulit)
Tidak ada batasan tambahan.
Solusi
Kita bisa menggunakan DP 3 state untuk menyelesaikan soal ini. Anggap dp(i)(c)(l) sebagai skor maksimum yang bisa di dapatkan jika telah sampai di vertex i dengan warna indeks yang diambil terakhir
c dan path sepanjang l. Solusi DP ini valid karena di dalam graph tidak ada cycle. Untuk menentukan
urutan dalam proses DP, bisa dengan menggunakan topological sort pada DAG. Anggap vertex-vertex
yang memiliki outdegree menuju i disimpan dalam list in(i).
c = Ti → dp(i)(c)(l) = max{dp(j)(c)(l), dp(j)(x)(l − 1) + Ai }
j ∈ in(i)
x ̸= c
c ̸= Ti → dp(i)(c)(l) = max{dp(j)(c)(l)}
j ∈ in(i)
Jawaban terdapat pada max{dp(j)(c)(l)}
l≤K
Kompleksitas = O(M KT )
11
TROLLS 2024 Informatika
Olympus Kesatuan Bangsa
F. Mencari Suara
Abridged Problem Statement
Diberikan N segmen yang ditandai dengan Li , Ri , dan Vi . Diberikan M pantangan juga yang ditandai
dengan Xi dan Wi .
Pada awalnya kita memiliki skor sebesar 0. Diberikan T dan K , pilihlah suatu indeks S dimana S+K−1 ≤
T . Untuk setiap segmen, jika S ≤ Li dan Ri ≤ S + K − 1, maka skor bertambah sebesar Vi . Untuk setiap
pantangan, jika S ≤ Xi ≤ S + K − 1, maka skor berkurang sebesar Wi .
Keluarkan skor maksimal yang mungkin.
Bagian Pemahaman
Kasus uji untuk menjawab soal F1 dan F2.
N =3
M =2
T = 10
K=4
L = [1, 3, 6]
R = [4, 3, 8]
V = [20, 5, 15]
X = [5, 2]
W = [8, 12]
Soal F1
Berapa suara maksimum yang bisa Pak Dengklek dapatkan?
Solusi
Dengan memilih S = 6, kita bisa mendapat skor sebesar V3 = 15
Soal F2
Jika W2 = 6, berapa suara maksimum yang bisa Pak Dengklek dapatkan?
Solusi
Dengan memilih S = 1, kita bisa mendapat skor sebesar V1 + V2 − W2 = 20 + 5 − 6 = 19
Soal F3
Benar atau Salah: Terdapat suatu kasus uji dimana bagaimanapun Pak Dengklek membangun tanah, Pak
Dengklek tidak mendapat suara, namun kehilangan suara
Solusi
12
TROLLS 2024 Informatika
Olympus Kesatuan Bangsa
Misalkan terdapat hanya 1 segmen dengan Li = 1, Ri = T , dan nilai Vi yang kecil. Serta K = T , dan
juga terdapat beberapa pantangan dengan nilai Wi besar. Dengan kasus seperti itu, skor akan negatif
sehingga Pak Dengklek kehilangan suara. Pernyataan tersebut BENAR.
Bagian Pemrograman
Subsoal 1 (Mudah)
• 1 ≤ N, T ≤ 200
Solusi
Lakukan brute force naik untuk setiap nilai S yang mungkin. Dengan implementasi yang tepat, solusi
akan cukup cepat untuk menembus time limit.
Kompleksitas = O((N + M )T 2 ) atau O((N + M )T ) tergantung implementasi.
Subsoal 2 (Sulit)
Tidak ada batasan tambahan.
Solusi
Jika batas nilai T adalah 200 000 maka soal ini dapat diselesaikan dengan sliding window. Namun, karena
T bisa sampai 1 000 000 000 maka kita hanya bisa menggeser ke bagian-bagian yang sekiranya mengganti
besar skor. Tentunya skor akan berubah jika S + K − 1 berada di salah satu indeks berikut:
• Ri → skor bertambah sebesar Vi
• Li + K → skor berkurang sebesar Vi
• Xi → skor berkurang sebesar Wi
• Xi + K → skor bertambah sebesar Wi
Jelas bahwa jika panjang segmen lebih dari K maka kita bisa mengabaikan segmen tersebut. Untuk
menyimpan keempat nilai-nilai penting diatas kita bisa menyimpannya dalam vector of pairs, dan disort
berdasarkan nilai yang membuatnya penting. Algoritma ini dinamakan line sweep.
Kompleksitas = O((N + M )log(N + M ))
13
TROLLS 2024 Informatika
Olympus Kesatuan Bangsa
Kontak:
Instagram: @hanifchdn
Email: hanifpietoyo@gmail.com
14
Download