6 Algoritma C++ STL yang Wajib Diketahui untuk CP

Pemrograman kompetitif merupakan terjemahan bebas dari istilah competitive programming atau biasa disebut CP. Berikut adalah ‘Shortcut’ algoritma untuk CP.

Sorting & Searching

Algorithm/Function Header Usage Time Complexity
sort() <algorithm> Mengurutkan rentang (vector, array) O(N log N)
stable_sort() <algorithm> Pengurutan stabil (mempertahankan urutan elemen yang sama) O(N log N)
partial_sort() <algorithm> Mengurutkan k elemen pertama O(N log K)
nth_element() <algorithm> Menemukan elemen terkecil ke-n O(N) rata-rata
binary_search() <algorithm> Memeriksa apakah suatu elemen ada dalam rentang yang diurutkan O(log N)
lower_bound() <algorithm> Elemen pertama target O(log N)
upper_bound() <algorithm> Elemen pertama target O(log N)

Contoh:

  • Untuk mengurutkan string s ="dcba" , Kita hanya perlu

Maka akan keluar output abcd

  • Untuk mengurutkan angka

Swap & Reverse

Function Header Usage
swap(a, b) <utility> Menukar dua nilai
reverse() <algorithm> Membalikkan rentang
iter_swap() <algorithm> Menukar elemen pada iterator

Contoh: 

Permutations & Combinations

Function Header Usage
next_permutation() <algorithm> Menghasilkan permutasi leksikografis berikutnya
prev_permutation() <algorithm> Menghasilkan permutasi leksikografis sebelumnya

Contoh:

Numeric Operations

Fungsi Header Penggunaan
gcd(a, b) <numeric> Menghitung faktor persekutuan terbesar (FPB) dari dua bilangan a dan b.
lcm(a, b) <numeric> Menghitung kelipatan persekutuan terkecil (KPK) dari dua bilangan a dan b.
accumulate() <numeric> Menjumlahkan semua elemen dalam suatu rentang (misalnya, vector atau array), atau menerapkan operasi biner lainnya.
partial_sum() <numeric> Menghitung jumlah parsial (prefix sums). Setiap elemen menjadi jumlah dari elemen-elemen sebelumnya ditambah dirinya sendiri.
iota() <numeric> Mengisi rentang (misalnya, vector atau array) dengan nilai-nilai yang bertambah secara berurutan, dimulai dari suatu nilai awal.

Contoh:

Min/Max Operations

Fungsi Header Penggunaan
min(a, b) <algorithm> Mengembalikan nilai yang lebih kecil antara dua nilai a dan b.
max(a, b) <algorithm> Mengembalikan nilai yang lebih besar antara dua nilai a dan b.
min_element() <algorithm> Mengembalikan iterator (penunjuk) ke elemen terkecil dalam sebuah rentang (misalnya, vector atau array).
max_element() <algorithm> Mengembalikan iterator (penunjuk) ke elemen terbesar dalam sebuah rentang (misalnya, vector atau array).

Contoh:

String Manipulation

Fungsi Header Penggunaan
tolower() / toupper() <cctype> Mengubah karakter menjadi huruf kecil (tolower()) atau huruf besar (toupper()).
isalpha() / isdigit() <cctype> Memeriksa apakah karakter adalah huruf alfabet (isalpha()) atau digit angka (isdigit()).
substr() <string> Mengekstrak (mengambil) bagian kecil (substring) dari sebuah string.
stoi() / to_string() <string> Mengkonversi string menjadi angka (stoi()) atau angka menjadi string (to_string()).

Contoh:

 

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *