• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zadanie Poddrzewo potyczki algorytmiczne

0 głosów
912 wizyt
pytanie zadane 15 kwietnia 2023 w Algorytmy przez pasjonat_algorytmiki Pasjonat (19,560 p.)
Mam problem z takim zdaniem: https://szkopul.edu.pl/problemset/problem/w9_OeHLYqjDZ3e_0QBG8Fj1U/site/?key=statement

Podejrzewam, że wejdzie tu jakiś zachłan, ale nie wiem jak do tego podejść. Nie znalazłem nigdzie w internecie rozwiązania.

Z góry dziękuję za pomoc i poświęcony czas!

1 odpowiedź

+2 głosów
odpowiedź 15 kwietnia 2023 przez Whistleroosh Maniak (57,400 p.)
wybrane 15 kwietnia 2023 przez pasjonat_algorytmiki
 
Najlepsza
I to jaki ładny zachłan wejdzie!

Jak na div A to zadanie jest całkiem proste. Co musi posiadać każde drzewo?
komentarz 15 kwietnia 2023 przez pasjonat_algorytmiki Pasjonat (19,560 p.)
To nie kończy zadania?
komentarz 15 kwietnia 2023 przez Whistleroosh Maniak (57,400 p.)
Tak, to jest wzorcówka
komentarz 15 kwietnia 2023 przez pasjonat_algorytmiki Pasjonat (19,560 p.)

Pozwolę sobie przez chwilę poużałać się nad sobą.

Po pierwsze to wyobraziłem sobie twoją minę i reakcję, gdy zobaczyłeś to pytanie i pisałeś: "I to jaki ładny zachłan wejdzie!" albo, gdy zapytałem: "Ale żeby jakoś od liści symulować powstawanie drzewa?", odpisałeś: "Może...". Ja bym się popłakał ze śmiechu. Jestem dumny z siebie, że zagwarantowałem Ci rozbawienie.

A tu kodzik mający 35 linii.

#include <iostream>

using namespace std;

int n = 0, wczytana_liczba = 0, idx_1 = -1, idx_2 = -1;

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

    cin >> n;
    for (int i = 0; i < n; ++i)
    {
        cin >> wczytana_liczba;
        if (wczytana_liczba == 1)
        {
            if (idx_1 == -1)
                idx_1 = i + 1;
            else
                idx_2 = i + 1;
        }
    }

    if (idx_1 == -1)
        cout << "2" << '\n' << "2" << '\n' << "1 2" << '\n';
    else if (idx_2 == -1)
        cout << "1" << '\n' << "2" << '\n' << "1 2" << '\n';
    else
        cout << "0" << '\n' << "2" << '\n' << "1" << ' ' << "2" << '\n';

    return 0;
}

Dzięki!

komentarz 15 kwietnia 2023 przez Whistleroosh Maniak (57,400 p.)
Żebyś wiedział ile razy ja zapewne ubawiłem swojego mentora w taki własnie sposób :) No ale cóż, tak się własnie człowiek uczy. To takie zadanie typowe na CF div. B. Możesz próbować brać udział w contestach na CF i nauczysz się szybko wpadać na takie pomysły.

btw na sio2 są solvy do zadań z PA
1
komentarz 15 kwietnia 2023 przez pasjonat_algorytmiki Pasjonat (19,560 p.)
Chyba zaczną brac udział w codeforces-ach. Nie wiem, jakieś zaćmienie mózgu miałem dzisiaj.... To jest prawda, takie przykłady uświadamiają, jak jeszcze daleka droga przedemną....

A propo solvów z PA, to faktycznie są, na przyszłość może to być dobry pomysł.....

Podobne pytania

0 głosów
1 odpowiedź 1,300 wizyt
pytanie zadane 6 kwietnia 2017 w C i C++ przez Index Nowicjusz (120 p.)
0 głosów
1 odpowiedź 344 wizyt
pytanie zadane 28 września 2023 w C i C++ przez Janchess Początkujący (480 p.)

93,736 zapytań

142,672 odpowiedzi

323,294 komentarzy

63,298 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...