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