Count Distinct Slices – Omówienie zadania – Gąsienica

Szczegółowe omówienie zadania Count Distinct Slices:

Link do powyższego omówienia zadania Count Distinct Slices: https://youtu.be/TMgFEpTuBvQ?t=1577
Link do treści zadania Count Distinct Slices: https://app.codility.com/programmers/lessons/15-caterpillar_method/count_distinct_slices

Zadanie Count Distinct Slices pokazuje zastosowanie algorytmu gąsienicy: https://youtu.be/TMgFEpTuBvQ?t=5215
Algorytm gąsienicy – symulacja krok po kroku dla zadania Count Distinct Slices: https://youtu.be/TMgFEpTuBvQ?t=3940
Początek omówienia gąsienicy: https://youtu.be/TMgFEpTuBvQ?t=3058

Złożoność algorytmu gąsienicy: https://youtu.be/TMgFEpTuBvQ?t=5286
Omówienie kodu – mamy podać tylko funkcję: https://youtu.be/TMgFEpTuBvQ?t=5459
Jak umieścić rozwiązanie na platformie Codility? https://youtu.be/TMgFEpTuBvQ?t=6172

Jak się uczyć na podstawie tego zadania? https://youtu.be/QgLyXYmFQeU?t=2019
Pamiętaj by zajrzeć max 1 raz – wtedy się rozwijasz: https://youtu.be/pkLXuuOe_qA?t=3625

Lista zadań z rozwiązaniami: https://oki.org.pl/lista-zadan-materialy.php
Samouczek – przygotowanie do Olimpiad: https://oki.org.pl/tutorial/

Zajęcia Olimpiada Informatyczna POZIOM II: https://oki.org.pl/olimpiada-informatyczna-poziom-ii/
Wszystkie zajęcia: https://oki.org.pl/harmonogram-zajec/
Informacje o zajęciach: https://oki.org.pl/newsletter.php


Kod C++ programu "Count Distinct Slices", który jest omówiony w powyższym filmie i który otrzymuje 100%


#include <iostream>
#include <vector>
using namespace std;

#define ll long long

//Funkcja do wklejenia na platformie Codility:
//https://app.codility.com/programmers/lessons/15-caterpillar_method/count_distinct_slices
int solution(int m, vector<int> &arr) {
    vector<int> is_in_set(m+1, 0);
    int n = arr.size();
    int l = 0, r = -1;
    ll res = 0;
    while(r < n-1) {
        r++;
        while(is_in_set[arr[r]]) {
            is_in_set[arr[l]] = 0;
            l++;
        }
        is_in_set[arr[r]] = 1;
        res += (r - l + 1);
    }
    if(res > 1e9) return 1e9;
    return res;
}

//Funkcja main tylko i wylacznie do testow na wlasnym komputerze
//Jesli chcesz potestowac program na wlasnym komputerze odkomentuj ponizszego main-a
//Jesli chcesz wrzucic rozwiazanie na Codility to zostaw ZAKOMENTOWANY poinzszy fragment z main 
/*
int main () {
 int n; cin >> n;
 vector<int> inp;
 int m=0;
 for (int i=0; i<n; ++i) {
    int x; cin >> x;
	inp.push_back(x);
	m = max(m,x);
 }
 cout << solution (m, inp) << '\n';
 return 0;
}
*/
Kod C++ programu "Count Distinct Slices", który jest omówiony w powyższym filmie i który otrzymuje 100%

 

Nie dodano jeszcze komentarza, rozpocznij dyskusję pierwszy.

Dodaj komentarz