Ostatnie posty

Ja również jeszcze nie dostałem. Podobno to przez błąd w nowym algorytmie szybkiego sortowania Google'a. Koszulki dostało ostatnie 255 osób z rankingu B.
Ja wciąż nie dostałem.
Czy ktoś dostał już koszulkę?
Teoretycznie najmniej się powinno dać w 67 jedynek. Pierwsza liczba która wymaga co najmniej 68 jedynek wynosi 1006290359.
https://oeis.org/A005520
https://oeis.org/A005520/b005520.txt
Szkoda 3 weekendów z życia, na jedne PA. Bardzo dobrze jest teraz, konkurs nie jest dla mięczaków.

Jak sobie poradzić, żeby przejść przez PA na pełnej kurze?

- Licealiści: olać szkołę albo zorganizować ferie świąteczne czy tydzień z Jasełkami w trakcie PA.
- Studenci: złamać nogę (byle nie rękę - chyba, że klepiecie kod nogami), zrobić operację plastyczną lub po prostu wziąć zwolnienie lekarskie.
- Pracownicy: wziąć urlop/chorobowe albo iść na bezrobocie (dobry wynik w PA oznacza, że na pewno szybko znajdziecie nową pracę).

Jeśli powyższe sposoby się nie sprawdzą, pomóc może jeszcze Kapitan Kox. Po szczegółowe instrukcje odsyłam na YouTube (nie będę wrzucał linku, bo treść jest 18+).
Co do formuły tygodnia zadań po min. 36h - wydaje mi się, że jest to właśnie dobra forma dla Potyczek. Jest ciekawa, wymaga mobilizacji przez dłuższy czas. Owszem, nie każdy jest w stanie znaleźć czas na każde zadanie - ale z kolei proponowana forma zadań np. w trzy kolejne weekendy spowoduje zbyt dużą rozwlekłość i znów uderzy w tych, którzy nie mają wówczas czasu. Nie uda się znaleźć idealnego czasu, a wydaje mi się, że obecna forma daje duże możliwości wygospodarowania czasu na przynajmniej część zadań. I jest to dodatkowo oryginalna formuła, wizytówka Potyczek.
A ja bym wydłużył rudny do drugiej, trzeciej rano :)
Dla mnie najfajniejsze w PA jest właśnie to, że formuła wyróżnia się na tle zawodów "sprinterskich" typu ACM czy TopCoder.
Wydaje mi się, że przy rundach trwających przynajmniej 36h jest większa szansa, że każdy znajdzie klika godzin w dogodnym dla siebie momencie niż gdyby rundy były krótkie.
Jasne, że najłatwiej było startować w trakcie studiów bo olać całkowicie kilka dni to zazwyczaj żaden problem ;)
I tak wydaje mi się, że sytuację poprawiło wyrzucenie kilka lat temu ostatniej, trudnej rundy poniedziałkowo-wtorkowej.

"Prawdopodobnie większość uczestników straciło punkty na różnego rodzaju wpadkach, jednak niespowodowanych brakiem poprawnego pomysłu, tylko drobną techniczną wpadką."
I tak właśnie powinno być :) Porządne przetestowanie swoich rozwiązań jest częścią rozwiązania.
Pamiętam jak podczas swoich startów w liceum potrafiłem często wymyślić optymalne rozwiązanie ale w co drugim zadaniu robiłem jakiegoś głupiego buga, którego nie umiałem znaleźć (szczególnie polegając tylko na wątpliwej jakości testach z forum) i traciłem z tego powodu mnóstwo punktów. Z kolei w tym roku nie straciłem ani jednego punktu w ten sposób - traciłem tylko na nieoptymalnych złożonościach.
To zdecydowanie jest umiejętność, której można się nauczyć z czasem i praktyką.
I tak mam wrażenie, że organizatorzy starają się trochę pomóc w testowaniu - np. w zadaniach z biblioteczką, gdzie dołączona przykładowa implementacja biblioteki jest praktycznie gotową sprawdzaczką do zadania.
Ja chciałbym zwrócić uwagę na to, że w moim przypadku to nie jest tak, że nie przemyślałem kodu. Wręcz przeciwnie, gapiłem się na tę krzywą bardzo długo, aby przemyśleć podział na przypadki dokładnie tak jak chciałem. To, że moje ostateczne rozwiązanie jest jakie jest, to nie wina tego, że sfailowałem w sztuce programowania tylko tego, że wpadłem na taki, a nie inny pomysł. Napisałem kilka(naście)(a może dziesiąt?) wzorków i nie miałem tu za wiele do przemyślania jak to kodować. Swoją drogą wydaje mi się, że mój pomysł się dość narzucał, bo zadania o rekurencyjnych krzywych, które spotkałem zawsze robił się tak, że się jej kawałki odnajduje w krzywych mniejszego rzędu i pisze wzorki na zależność punktu w krzywej n od punktów na krzywych rzędu n-1 czy tam n-2, dlatego trochę dziwi mnie mnogość rozwiązań do tego zadania. Ale jak pokazuje rozwiązanie Eryka, dało się zdecydowanie ładniej :P.
Zgadzam się, że Hilbert to jest to zadanie na przemyślenie implementacji przed przysiadaniem do kodowania.
EDIT: resztę postu skasowałam bo był bez sensu.
@Maciej Gawron
"Licealiści muszą chodzić do szkoły ..."
Własnie problem polega na tym, że niektórzy mogą sobie pozwolić na mniejszą bądź większą absencję dla Potyczek, dzięki czemu mają dużo więcej czasu.
Urokiem Potyczek faktycznie jest to, że rundy zdalne są długie i trudne. Ale czy nie lepszym pomysłem byłyby na przykład trzy rundy weekendowe z dwoma zadaniami do A i B? Byłoby to z pewnością inne, jednak zachowalibyśmy prestiżowy charakter konkursu, a udałoby się wyeliminować znużenie spowodowane "muszę siedzieć po kilka(naście) godzin dziennie przez cały tydzień".
Jest mnóstwo konkursów algorytmicznych i forma rundy zdalnej potyczek wyróżnia się tym, że jest testem mocy a nie szybkości.
Zadania są trudne ale ma się na nie dużo czasu. Dla mnie to duży plus.

Licealiści muszą chodzić do szkoły, studenci na zajęcia, programiści do pracy... Najtrudniejsza runda jest w weekend.
Argument o czasochłonności uważam za bardzo chybiony i byłbym smutny gdyby potyczki stały się konkursem z bardzo ograniczonym czasem i prostszymi zadaniami (kopią CF czy TC).

Co do pretestów to są zazwyczaj na forum. Nie sądzę, żeby to coś pomogło. Innym rozwiązaniem jest od razu pełny feedback jak na hackerranku.


Popieram pomysł z pretestami - chociaż pytanie jest wtedy, czy dawać testy uwalające heury w zadaniach heurogennych do pretestów. Moim zdaniem w przypadku takich zadań typu Szeregowanie testy uwalające w przypadku wprowadzenia pretestów powinny być schowane w głównych testach.
Napisałem trochę tekstu w ankiecie i stwierdziłem, że się podzielę. Co sądzicie o mojej opinii?

Forma rund zdalnych jest już chyba tradycją potyczek, jednak, jak już wspominałem wyżej, jest dość wyczerpująca, czasochłonna i wydaje się być troszkę niemiarodajna. Z przede wszystkim dwóch powodów - nie każdy może sobie pozwolić na tak długą pracę (czego beneficjentami są od razu licealiści i niektórzy studenci) i często dzieją się dziwne punktowe dziwactwa. Prawdopodobnie większość uczestników straciło punkty na różnego rodzaju wpadkach, jednak niespowodowanych brakiem poprawnego pomysłu, tylko drobną techniczną wpadką. Przywołam w tym miejscu przykład Mariusza Treli, który rozwiązał jedno z najtrudniejszych zadań konkursu (bilard Hilberta) i otrzymał zero za to rozwiązanie z powodu absurdalnie małego (w porównaniu do całości) błędu, gdyż wypisywał (1, 0) zamiast (0, 1) w jednym brzegowym przypadku. Takie sytuacje są odpowiedzialne za randomizowanie rankingu. Oczywiście można się spierać, że Potyczki są konkursem informatycznym, a nie matematycznym i umiejętność poprawnego testowania rozwiązania również jest ważna. Wpływa to jednak na konieczność dłuższego siedzenia nad zadaniem (które nota bene i tak jest zwykle trudne), a i tak cięzko uniknąć róznego rodzaju wpadek.

Moją propozycją byłoby swojego rodzaju odsłanianie lub "pretesty", tak jak jest to odpowiednio na Olimpiadzie Informatycznej i Codeforces. Pretesty mogłyby na przykład polegać na tym, że odsłonięty jest wynik za połowę (parzyste lub pierwsze pół) testów w zadaniu. W ten sposób udałoby się choć odrobinę wpłynąć na wspomniane przeze mnie niedogodności.

Pozdrawiam serdecznie,
Kacper Walentynowicz
Opisałem moje rozwiązanie grzybów w forum rundy 3.