Daisy Chains – Omówienie zadania – Amerykańska Olimpiada Informatyczna USACO

Szczegółowe omówienie zadania Daisy Chains:

 

Link do powyższego omówienia zadania Daisy Chains: https://youtu.be/VvJhOAXIQOk?t=2646
Skrót omówienia rozwiązania: https://youtu.be/VvJhOAXIQOk?t=5144

Link do treści zadania Daisy Chains raz możliwości umieszczania rozwiązań:
http://usaco.org/index.php?page=viewproblem2&cpid=1060

Zadanie Daisy Chains pokazuje użycie vector-a w C++: https://youtu.be/VvJhOAXIQOk?t=484

Zadanie z Amerykańskiej Olimpiady USACO! https://youtu.be/VvJhOAXIQOk?t=156
Pozwala stworzyć fantastyczne CV! https://youtu.be/VvJhOAXIQOk?t=5449


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 – nauka programowania: https://oki.org.pl/harmonogram-zajec/

Spróbuj Olimpiady!
https://youtu.be/fk2wGqeiVBY?t=219


Kod C++ programu Daisy Chains, który jest omówiony w powyższym filmie i który otrzymuje 100%


#include <iostream>
#include <vector>
using namespace std;
bool IsAvrageIncluded(vector<int> v, int start, int finish) {
int i, sum, number_of_elements, avrage;	
number_of_elements = finish - start + 1; //ilosc kwiatkow na zdjeciu
//suma platkow ze zdjecia  
sum = 0;
for (i=start; i<=finish; ++i)
sum += v[i];
//jesli srednia ilosc platkow w kwiatku jest niecalkowita - nie bedzie jej na zdjeciu 
if ( (sum % number_of_elements) != 0)
return false; 
//jesli tu jestemy to sredni element jest calkowity
//sprawdzamy czy sredni element istnieje w tablicy
avrage = sum / number_of_elements;
for (i=start; i<=finish; ++i)
if ( v[i] == avrage )
return true;
return false;
}
int main() {
int number_of_flowers, number_of_good_photos, act_petals, i, start, finish;
vector<int> petals;
cin >> number_of_flowers; //przyklad z zadania - 4 kwiatki
for (i=0; i<number_of_flowers; ++i) { // 0 1 2 3
cin >> act_petals; //wycztaj ilosc platkow aktualnego kwiatka (1 1 2 3)
petals.push_back(act_petals); //dodaj do wektora kolejne platki
}
number_of_good_photos = 0; //ilosc dobrych fotogrfii poczatkowo jest 0
for (start=0; start<petals.size(); ++start) { //dla kazdego poczatku zdjecia
for (finish=start; finish<petals.size(); ++finish) { //dla kazdego konca zdjecia
if ( IsAvrageIncluded(petals,start,finish) == true ) //sprawdzamy czy sredni element jest miedzy start a finish
++number_of_good_photos; //jesli tak - zwiekszamy liczbe dobryvch fotografii
}
}
cout << number_of_good_photos << "\n";
return 0;
}
Kod C++ programu Daisy Chains, który jest omówiony w powyższym filmie i który otrzymuje 100%

 

 

Nie dodano jeszcze komentarza, rozpocznij dyskusję pierwszy.

Dodaj komentarz