Forum jest zablokowane. Podczas blokady nie można dodawać ani edytować wiadomości.
Ostatnie posty
Zadania faktycznie były trudne, ale raczej uważam to za atut.
Były przemyślane, rozwiązujące je można było się sporo nauczyć a poprawne rozwiązanie zadań dawało dużo satysfakcji.
Być może dobrym kompromisem byłoby przyznawanie większej ilości punktów za rozwiązania niekoniecznie optymalne?
Nie wiem.
Wiem z kolei, że nie mogę się doczekać kiedy zadania pojawią się na szkopule, bo do rozwiązania kilku zadań zwyczajnie brakło mi czasu, a chciałbym wysłać swoje rozwiązania do sprawdzenia :)
Były przemyślane, rozwiązujące je można było się sporo nauczyć a poprawne rozwiązanie zadań dawało dużo satysfakcji.
Być może dobrym kompromisem byłoby przyznawanie większej ilości punktów za rozwiązania niekoniecznie optymalne?
Nie wiem.
Wiem z kolei, że nie mogę się doczekać kiedy zadania pojawią się na szkopule, bo do rozwiązania kilku zadań zwyczajnie brakło mi czasu, a chciałbym wysłać swoje rozwiązania do sprawdzenia :)
O 23:20 udało się poprawić ;)
Również się przyłączam do podziękowań!
Bardzo dobra organizacja Panowie - fajne, unikalne zadania, mocne testy (choć pewnie za to nie wszyscy są wdzięczni ;), jasno napisane treści.
Szacunek dla Marka, za opracowanie zadania Wyspa!
Również się przyłączam do podziękowań!
Bardzo dobra organizacja Panowie - fajne, unikalne zadania, mocne testy (choć pewnie za to nie wszyscy są wdzięczni ;), jasno napisane treści.
Szacunek dla Marka, za opracowanie zadania Wyspa!
Dziękujemy bardzo! Co do trudności zadań, to rzeczywiście okazały się być delikatnie trudniejsze niż się spodziewaliśmy, ale człowiek uczy się całe życie, na pewno weźmiemy to pod uwagę w przyszłych latach.
A my dziękujemy za wytrwałą walkę!
A wiecie, że dopełnienie kuli też jest kulą? Ktoś widzi, co to ułatwia w zadaniu?
Ciekawe było też kibicowanie (lub nie) osobom, które przypisują x = z zamiast xorować x ^= z w zadaniu OIW. Poprawi tego buga czy nie poprawi? Nie pomoże tu fakt, że testy z forum mają z = 0...
Rzeczywiście warto zarwać kilka nocy.
Rzeczywiście warto zarwać kilka nocy.
Dziękuję bardzo w imieniu własnym i całej kadry merytorycznej! Wasze zadowolenie oraz emocje, których nam dostarczacie, w pełni rekompensują nam nieprzespane noce. :)
1. Wielkie dzięki za organizację, zadanka były ciekawe jak zawsze odkąd pamiętam :)
2. Propsuję brak rundy rozproszonej: ilość zachodu z punktu widzenia uczestnika, żeby zaimplementować rozproszony algorytm jest istotnie większa niż dla nierozproszonego, w związku z czym przez ostatnie ~2 lata nawet nie próbowałem jej pisać. Domyślam się, że z punktu widzenia organizatorów rozproszone zadania to też dużo więcej wysiłku.
3. Zadania były trochę za trudne (próg na koszulkę <20 to jednak trochę słabo). W szczególności wydaje mi się, że moje rozwiązanie, które korzystało z doubli do HER (a poza tym było poprawne) powinno dostać >4 (jako ostateczne wysłałem rozwiązanie na LL).
2. Propsuję brak rundy rozproszonej: ilość zachodu z punktu widzenia uczestnika, żeby zaimplementować rozproszony algorytm jest istotnie większa niż dla nierozproszonego, w związku z czym przez ostatnie ~2 lata nawet nie próbowałem jej pisać. Domyślam się, że z punktu widzenia organizatorów rozproszone zadania to też dużo więcej wysiłku.
3. Zadania były trochę za trudne (próg na koszulkę <20 to jednak trochę słabo). W szczególności wydaje mi się, że moje rozwiązanie, które korzystało z doubli do HER (a poza tym było poprawne) powinno dostać >4 (jako ostateczne wysłałem rozwiązanie na LL).
Chciałem bardzo podziękować organizatorom i autorom zadań za wspaniały konkurs.
Dzięki za tak szczegółowy opis. Ja doszedłem tylko do tego miejsca, że można podzielić na A i B, co wystarczało na rozwiązanie tylko 2 kul.
Ja do tego tak podszedłem:
Wszystko da się sprowadzić z zasady włączeń i wyłączeń do problemu wyznacz przecięcie trzech hiperkul.
Mamy 3 maski bitowe, chcemy policzyć ile jest takich masek bitowych które dla każdej z tych trzech danych nie są oddalone o nich o więcej niż pewne r_i dla maski, gdzie odległość między maskami a oraz b była określona jako ilość zapalonych bitów maski (a xor b).
Można najpierw zacząć od zxorowania naszych trzech masek z pierwszą, przez co pierwsza maska jest samymi zerami (można tak zrobić, bo xor to przesunięcie o pewien wektor). Teraz, liczę ile jest takich pozycji że (drugą maskę oznaczę przez m2, trzecią przez m3, zakładam że m1[i] = 0), m2[i] = 0, m3[i] = 0 - niech ta ilość to będzie A, odpowiednio dalej B to ilość pozycji, że m2[i] = 0, m3[i] = 1, C, że m2[i] = 1, m3[i] = 0, D, że m2[i] = 1, m3[i] = 1. Teraz można skonstruować pewien układ nierówności, które są spełniane przez każdą maskę w przecięciu.
No więc weźmy pewną maskę należącą do przecięcia. Niech [mała literka] oznacza ile wybraliśmy jedynek na pozycjach [duża literka], czyli np a to ilość jedynek, na takich pozycjach, że m2[i] = m3[i] = 0. Mamy pierwsze nierówności
0 <= a <= A, 0 <= b <= B, 0 <= c <= C, 0 <= d <= D
Teraz zobaczmy jakie ograniczenia generują nam promienie (r1, r2, r3) hiperkul
a+b+c+d <= r1, bo zawsze m1[i] = 1
a+b+(C - c) + (D - d) <= r2, bo w m2 jedynki są na pozycjach typu C i D
a+(B - b) + (C - c) + d <= r3, bo w m3 jedynki są na pozycjach typu B i D
Dla każdego rozwiązania tego równania, do wyniku trzeba było dodać (A po a) * (B po b) * (C po c) * (D po d), bo ze zbioru pozycji wybieramy miejsca gdzie postawimy jedynki.
Rozwiązywałem ten układ nierówności w ten sposób: iteruję się po c i d, wtedy dostawałem układ nierówności w postaci
0<=a<=A, 0<=b<=B, a+b<=s1, a-b<=s2 gdzie s1 oraz s2 to pewne współczynniki wyliczone z wcześniejszego układu. Ten układ dało się rozwiązać geometrycznie.
O(n^2) można było zrobić preprocessing po pewnych sumach (A po i) * (B po j), żeby liczyć potem w czasie stałym dla jakiegoś c i d móc policzyć sumę tych wyrazów na trójkątach, więc złożoność całkowita to też O(n^2)
Możliwe, że przekombinowałem, ale 10pkt jest :>
Wszystko da się sprowadzić z zasady włączeń i wyłączeń do problemu wyznacz przecięcie trzech hiperkul.
Mamy 3 maski bitowe, chcemy policzyć ile jest takich masek bitowych które dla każdej z tych trzech danych nie są oddalone o nich o więcej niż pewne r_i dla maski, gdzie odległość między maskami a oraz b była określona jako ilość zapalonych bitów maski (a xor b).
Można najpierw zacząć od zxorowania naszych trzech masek z pierwszą, przez co pierwsza maska jest samymi zerami (można tak zrobić, bo xor to przesunięcie o pewien wektor). Teraz, liczę ile jest takich pozycji że (drugą maskę oznaczę przez m2, trzecią przez m3, zakładam że m1[i] = 0), m2[i] = 0, m3[i] = 0 - niech ta ilość to będzie A, odpowiednio dalej B to ilość pozycji, że m2[i] = 0, m3[i] = 1, C, że m2[i] = 1, m3[i] = 0, D, że m2[i] = 1, m3[i] = 1. Teraz można skonstruować pewien układ nierówności, które są spełniane przez każdą maskę w przecięciu.
No więc weźmy pewną maskę należącą do przecięcia. Niech [mała literka] oznacza ile wybraliśmy jedynek na pozycjach [duża literka], czyli np a to ilość jedynek, na takich pozycjach, że m2[i] = m3[i] = 0. Mamy pierwsze nierówności
0 <= a <= A, 0 <= b <= B, 0 <= c <= C, 0 <= d <= D
Teraz zobaczmy jakie ograniczenia generują nam promienie (r1, r2, r3) hiperkul
a+b+c+d <= r1, bo zawsze m1[i] = 1
a+b+(C - c) + (D - d) <= r2, bo w m2 jedynki są na pozycjach typu C i D
a+(B - b) + (C - c) + d <= r3, bo w m3 jedynki są na pozycjach typu B i D
Dla każdego rozwiązania tego równania, do wyniku trzeba było dodać (A po a) * (B po b) * (C po c) * (D po d), bo ze zbioru pozycji wybieramy miejsca gdzie postawimy jedynki.
Rozwiązywałem ten układ nierówności w ten sposób: iteruję się po c i d, wtedy dostawałem układ nierówności w postaci
0<=a<=A, 0<=b<=B, a+b<=s1, a-b<=s2 gdzie s1 oraz s2 to pewne współczynniki wyliczone z wcześniejszego układu. Ten układ dało się rozwiązać geometrycznie.
O(n^2) można było zrobić preprocessing po pewnych sumach (A po i) * (B po j), żeby liczyć potem w czasie stałym dla jakiegoś c i d móc policzyć sumę tych wyrazów na trójkątach, więc złożoność całkowita to też O(n^2)
Możliwe, że przekombinowałem, ale 10pkt jest :>
Przyłączam się do prośby.
Czy ktos moze wyjasnic jak sie robilo 3 kule?
Dla części z nas (większej) tegoroczne PA już się zakończyły.
Żebyśmy mogli wsiąść udział w tych zawodach - sztab ludzi (ktoś na pewno) nie spał po nocach.
Chciałbym wszystkim zaangażowanym w organizację podziękować!
Zdajemy sobie sprawę, że wymyślenie zadania często jest trudniejsze niż jego rozwiązanie.
Równocześnie,
Zawody organizowane są o ile się nie mylę od..18 lat (?). Od 2005 Potyczki Algorytmiczne), ale jeszcze przecież w 2001 roku konkurs odbywał się pod inna nazwą (też PA)... Załączam także serdecznie podziękowania dla wszystkich zaangażowanych w projekt - często od samego początku! Wspaniała praca!
Tak więc, dziękuję bardzo!
I do zobaczenia w przyszłym roku.
PF
Żebyśmy mogli wsiąść udział w tych zawodach - sztab ludzi (ktoś na pewno) nie spał po nocach.
Chciałbym wszystkim zaangażowanym w organizację podziękować!
Zdajemy sobie sprawę, że wymyślenie zadania często jest trudniejsze niż jego rozwiązanie.
Równocześnie,
Zawody organizowane są o ile się nie mylę od..18 lat (?). Od 2005 Potyczki Algorytmiczne), ale jeszcze przecież w 2001 roku konkurs odbywał się pod inna nazwą (też PA)... Załączam także serdecznie podziękowania dla wszystkich zaangażowanych w projekt - często od samego początku! Wspaniała praca!
Tak więc, dziękuję bardzo!
I do zobaczenia w przyszłym roku.
PF
Po 3 rundach było 12, a po 4 jest już 14 (zaokrąglam w dół, bo organizatorzy zwykle dają koszulki wszystkim tym którzy mają co najmniej tyle punktów co było na pozycji 256).
Wygląda na to że trudniejsze zadania były w tym roku, bo w zeszłym przy podobnej liczbie uczestników trzeba było mieć 26 punktów.
Wygląda na to że trudniejsze zadania były w tym roku, bo w zeszłym przy podobnej liczbie uczestników trzeba było mieć 26 punktów.