Forum jest zablokowane. Podczas blokady nie można dodawać ani edytować wiadomości.
Ostatnie posty
Może niespodzianką ma być to, że ocenianie rozwiązań jednak zajmie dłużej niż do dzisiaj?
ja bym dała Wojtkowi honorową rangę suma za ten post, mimo że nie ma jeszcze 4000 postów na forum tegorocznych potyczek
W tym momencie to największą niespodzianką byłby jej brak :P Więc może o to chodziło organizatorom (?) :P
Ja też z tych mniej ogarniętych i też ciągle czekam xD Najgorsze że nie wiadomo gdzie tej niespodzianki się spodziewać więc co piętnaście minut przejście po podstronach SIO xD
@Franciszek
Zgaduję, że chodzi o coś takiego, jak w tym zadaniu:
https://codeforces.com/problemset/problem/724/F
(w tutorialu będzie opis)
Pytaniem jest - ile jest nie-izomorficznych drzew o rozmiarze n bez labeli.
Zasadniczo, można policzyć dp[n_vertices][subtree] - ile jest drzew o rozmiarze n_vertices z największym poddrzewem o rozmiarze subtree z wyróżnionym elementem - korzeniem. Można to zrobić w O(n^2 log(n)) z sumami prefiksowymi i kombinacją z powtórzeniami, a potem zliczać liczbę nie-izomorficznych drzew z tego dynamika przy założeniu, że korzeniem jest centroid - będzie przypadek szczególny przy 2 centroidach i parzystej liczbie wierzchołków.
Te 2 sekwencje są szerzej opisane tu:
https://oeis.org/A000081
https://oeis.org/A000055
Z tego można było zaklepać dynamik w jakimś O(n^4 log(n)) do tego zadania dodając jeszcze 2 wymiary.
Zgaduję, że chodzi o coś takiego, jak w tym zadaniu:
https://codeforces.com/problemset/problem/724/F
(w tutorialu będzie opis)
Pytaniem jest - ile jest nie-izomorficznych drzew o rozmiarze n bez labeli.
Zasadniczo, można policzyć dp[n_vertices][subtree] - ile jest drzew o rozmiarze n_vertices z największym poddrzewem o rozmiarze subtree z wyróżnionym elementem - korzeniem. Można to zrobić w O(n^2 log(n)) z sumami prefiksowymi i kombinacją z powtórzeniami, a potem zliczać liczbę nie-izomorficznych drzew z tego dynamika przy założeniu, że korzeniem jest centroid - będzie przypadek szczególny przy 2 centroidach i parzystej liczbie wierzchołków.
Te 2 sekwencje są szerzej opisane tu:
https://oeis.org/A000081
https://oeis.org/A000055
Z tego można było zaklepać dynamik w jakimś O(n^4 log(n)) do tego zadania dodając jeszcze 2 wymiary.
Mniej ogarnięty: Ja czekam XD
I zostaliśmy oszukani, jest już po popołudniu...
I zostaliśmy oszukani, jest już po popołudniu...
Do tych bardziej ogarniętych: czy coś przegapiłem czy wszyscy razem czekamy?
Popieram wszystkie trzy punkty! Co do 3) to nawet wydawało mi się, że była kiedyś wygodniejsza opcja niż przyglądanie się dokładnie zgłoszeniom, ale nie mogłam sobie przypomnieć jaka.
Podczepię się bo też mam życzenia/zażalenia/pomysły:
4) Dla zadań z dywizji C mamy po 10 zgłoszeń i 10 odsłonięć. Nie do końca rozumiem czemu nie mogą się po prostu pokazywać punkty, bez zabawy w odsłanianie? Nie żeby to było jakoś dużo roboty wyklikać to odsłonięcie, po prostu mnie to ciekawi.
5) Byłoby dużo wygodniej gdyby strona główna forum pokazywała ostatni post (albo chociaż jego czas) tak jak jest na stronach kategorii. Tak jak jest można łatwo przegapić jakieś posty, w szczególności sporo postów w kategoriach hydepark+opinie+techniczne długo wisiało nieodpowiedzianych, być może z tego powodu.
6) W niektórych rundach wyniki dostajemy po wielu godzinach, ale dostajemy je dla wszystkich zgłoszeń równocześnie. Może moglibyśmy szybciej dostać wyniki ostatniego zgłoszenia do każdego z zadań, a dopiero po jakimś czasie wyniki wszystkich zgłoszeń?
Podczepię się bo też mam życzenia/zażalenia/pomysły:
4) Dla zadań z dywizji C mamy po 10 zgłoszeń i 10 odsłonięć. Nie do końca rozumiem czemu nie mogą się po prostu pokazywać punkty, bez zabawy w odsłanianie? Nie żeby to było jakoś dużo roboty wyklikać to odsłonięcie, po prostu mnie to ciekawi.
5) Byłoby dużo wygodniej gdyby strona główna forum pokazywała ostatni post (albo chociaż jego czas) tak jak jest na stronach kategorii. Tak jak jest można łatwo przegapić jakieś posty, w szczególności sporo postów w kategoriach hydepark+opinie+techniczne długo wisiało nieodpowiedzianych, być może z tego powodu.
6) W niektórych rundach wyniki dostajemy po wielu godzinach, ale dostajemy je dla wszystkich zgłoszeń równocześnie. Może moglibyśmy szybciej dostać wyniki ostatniego zgłoszenia do każdego z zadań, a dopiero po jakimś czasie wyniki wszystkich zgłoszeń?
W wartościowej pracy dobrego programisty umiejętność myślenia algorytmicznego jest kluczowa. Dlatego uważam, że zarówno konkursy są świetnym treningiem, jak i testowanie kandydatów przez algorytmy to całkiem dobra metoda.
Może niekoniecznie są to dokładnie tego samego rodzaju algorytmy co w potyczkach -- może zamiast myśleć o grafach trzeba myśleć o komunikacji w internecie, albo może o cache'ach procesorów, albo może o zaokrągleniach w obliczeniach numerycznych, albo o optymalizacji przybliżonej, itd. Ale i tak jest to ten sam rodzaj algorytmicznego myślenia.
Moje podejście jest takie, że jeśli jakieś zadanie programistyczne jest "nudne", tzn nie wymaga zbyt wiele myślenia, to to oznacza, że można je szybko zaimplementować i mieć z głowy. Jeśli nie da się czegoś szybko zrobić, to znaczy że tam jest jakiś problem do rozwiązania.
Mówię tu o pracy czysto programistycznej -- jest dużo ludzi, dla których programowanie to tylko mała część pracy, a głównie zajmują się czymś innym, to wtedy siłą rzeczy mają problemy zupełnie inne niż algorytmiczne.
Może niekoniecznie są to dokładnie tego samego rodzaju algorytmy co w potyczkach -- może zamiast myśleć o grafach trzeba myśleć o komunikacji w internecie, albo może o cache'ach procesorów, albo może o zaokrągleniach w obliczeniach numerycznych, albo o optymalizacji przybliżonej, itd. Ale i tak jest to ten sam rodzaj algorytmicznego myślenia.
Moje podejście jest takie, że jeśli jakieś zadanie programistyczne jest "nudne", tzn nie wymaga zbyt wiele myślenia, to to oznacza, że można je szybko zaimplementować i mieć z głowy. Jeśli nie da się czegoś szybko zrobić, to znaczy że tam jest jakiś problem do rozwiązania.
Mówię tu o pracy czysto programistycznej -- jest dużo ludzi, dla których programowanie to tylko mała część pracy, a głównie zajmują się czymś innym, to wtedy siłą rzeczy mają problemy zupełnie inne niż algorytmiczne.
Obstawiam omówienia zadań, zwłaszcza że organizatorzy coś nie odpowiadali jak na forum było pytanie o to :P
Jak na moje, wystarczą nie więcej niż 74 punkty.
Sprawdzałem równo o 12, mam bardzo silnie wrażenie że akurat jak odświeżyłem ogłoszenie magicznie zmieniło się na "popołudnie", ale może to miliard godzin przed kompem zepsuł mi wzrok xd
Jak myślicie - co to może być za niespodzianka? Osobiście mam nadzieję, że pizza.
Da się poprawić algorytm dziel i rządź żeby działał szybko z pamięcią (cache-oblivious), w czasie O(n^1.5 log n):
Sortujemy zapytania przechodzące przez linię podziału po początkach i po końcach. Nie łączymy wyników lewych i prawych od razu dla każdego zapytania (bo to wymaga losowego skakania po pamięci), tylko zbieramy połówkowe wyniki w tablicy o wielkości 2q, ułożone według początków/końców zapytań. Na koniec sortujemy tą tablicę po numerze zapytania, i dopiero wtedy łączymy dwa wyniki dla każdego zapytania.
Sortujemy zapytania przechodzące przez linię podziału po początkach i po końcach. Nie łączymy wyników lewych i prawych od razu dla każdego zapytania (bo to wymaga losowego skakania po pamięci), tylko zbieramy połówkowe wyniki w tablicy o wielkości 2q, ułożone według początków/końców zapytań. Na koniec sortujemy tą tablicę po numerze zapytania, i dopiero wtedy łączymy dwa wyniki dla każdego zapytania.
Zajmuję się rekrutacją programistów od kilkunastu lat. Uważam, że podstawowa znajomość algorytmów jest kluczowa - ale tylko podstawowa. Moje ulubione zadanie dla kandydatów to "znajdź w tekście najczęściej występujące słowo". Bardzo łatwe - trudność na poziomie grupy "C" w początkowych rundach. Trzeba po prostu umieć użyć struktury typu map<string,int>. Jednak to mi wręcz idealnie odsiewa ludzi, którzy potrafią coś zaprogramować od tych, którym się wydaje, że potrafią.
Trudno uwierzyć, jak mało kandydatów potrafi zrobić to zadanie. 60-80% napływających CV odrzucam po samym CV. Z pozostałymi kandydatami spotykam się. Spośród tych 75% nie potrafi zrobić tego zadania, często pomimo ukończenia tzw. "studiów informatycznych", ale na uczelniach typu "Wyższa Szkoła Informatyki i Umiejętności". Zdarzają mi się nawet osoby, które nie potrafią zrozumieć treści zadania, pomimo że służę wszelkimi wyjaśnieniami.
Tak naprawdę ważne jest, żeby programista miał "inteligencję programistyczną", którą oczywiście łatwo sobie wyrobić algorytmiką. Jednak sama znajomość algorytmów i umiejętność rozwiązywania problemów algorytmicznych najczęściej nie jest bezpośrednio użyteczna w typowej pracy programisty.
Trudno uwierzyć, jak mało kandydatów potrafi zrobić to zadanie. 60-80% napływających CV odrzucam po samym CV. Z pozostałymi kandydatami spotykam się. Spośród tych 75% nie potrafi zrobić tego zadania, często pomimo ukończenia tzw. "studiów informatycznych", ale na uczelniach typu "Wyższa Szkoła Informatyki i Umiejętności". Zdarzają mi się nawet osoby, które nie potrafią zrozumieć treści zadania, pomimo że służę wszelkimi wyjaśnieniami.
Tak naprawdę ważne jest, żeby programista miał "inteligencję programistyczną", którą oczywiście łatwo sobie wyrobić algorytmiką. Jednak sama znajomość algorytmów i umiejętność rozwiązywania problemów algorytmicznych najczęściej nie jest bezpośrednio użyteczna w typowej pracy programisty.