Dziwne cząsteczki – Omówienie zadania

Szczegółowe omówienie zadania Dziwne cząsteczki:

Link do powyższego omówienia zadania Dziwne cząsteczki: https://youtu.be/jsaVtx5WQv0?t=1206
Link do treści zadania Dziwne cząsteczki: https://szkopul.edu.pl/problemset/problem/dwc/site

Zadanie Dziwne cząsteczki wykorzystuje  sumy prefiksowe: https://youtu.be/K4QtM9ycYl8?t=2489
Gdzie wykorzystuje się sumy prefiksowe? https://youtu.be/jsaVtx5WQv0?t=245

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 OD PODSTAW: https://oki.org.pl/olimpiada-informatyczna-od-podstaw/
Wszystkie zajęcia: https://oki.org.pl/harmonogram-zajec/
Informacje o zajęciach: https://oki.org.pl/newsletter.php


Kod C++ programu "Dziwne cząsteczki", który jest omówiony w powyższym filmie i który otrzymuje 100%


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

const int limit1=1e6+7, limit2=1e4+4;
long long t[limit1];
long long sumpref[limit1];//suma prefiksowa posortowanego ciagu
long long zlicz[limit2];//suma prefiksowa tablicy zliczajacej

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    long long n, k;
    cin>>n>>k;
    for(int i=0; i<n; i++){
        cin>>t[i];
    }
    sort(t, t+n+1);//wartownik

    long long wynik=0;
    int ost=0;//ostatnia ogarnieta pozycja w tablicy zlicz
    for(int i=1; i<=n; i++){

        sumpref[i]=sumpref[i-1]+t[i];
        for(int j=ost+1; j<=t[i]; j++){
            zlicz[j]=zlicz[j-1];
        }
        ost=t[i];

        long long temp=zlicz[t[i]]-zlicz[max(t[i]-k-1, 0LL)];//roznica<=k
        wynik+=temp*k;
        wynik+=t[i]*(i-1-temp)-sumpref[i-1-temp];

        zlicz[t[i]]++;
    }

    cout<<wynik;
}
Kod C++ programu "Dziwne cząsteczki", który jest omówiony w powyższym filmie i który otrzymuje 100%

 

Nie dodano jeszcze komentarza, rozpocznij dyskusję pierwszy.

Dodaj komentarz