23 / 38
Sep 2021

Mistrzostwo :wink: niestety żadnego z wymienionych nie znałem … więc albo to jest klasyka tylko dla informatyków a nie koniecznie dla osób z innym wykształceniem albo ja zmarnowałem sporą część swojego życia :joy: Więc jakbyś kiedyś przypomniał sobie coś jeszcze i zechcesz dopisać to będę wdzięczny :wink: Plus macie jakieś książki z których można się takie rzeczy dowiedzieć ? Ja znalazłem przy innym poście jedną “wprowadzenie do algorytmów” , będzie dobra “na start” czy coś innego polecacie ?
P.S Ok jednak eliminacje Gaussa się uczyłem ale pamięć zawodna :man_shrugging:

Jestem inż. technologii chemicznej. Więcej w tym kontekście w wątku SPOJ a praca... i życie.

Sam nie kojarzę w tej chwili niczego więcej. Ściślej: nic z takich bardziej oczywistych rzeczy nie rzuca mi się w oczy.

Dla mnie trick ma to do siebie, że widzisz problem realny (np. układy r. liniowych są dość powszechne w życiu), możesz nie wiedzieć jak to roztrzaskać (bo faktycznie widząc 1000 równań liniowych z 1000 zmiennych… jest wesoło), możesz to wymyślić (w czasie zależnym od wielu czynników, ale umówmy się - tricki na samym końcu okazują się proste i myślisz coś w rodzaju “kurde, faktycznie!”), ale lepiej by ktoś Cię nakierował. I po tym nakierowaniu wszystko staje się jasne.

Pośród różnych innych tricków, od wzorców projektowych z kwestii technicznych po drzewa rozpinające w kwestiach matematycznych, trzeba już jednak nieco więcej wiedzieć, widzieć, rozumieć, kodować, … . To nie jest ani takie proste do ogarnięcia ani takie kultowe ani nie daje takiego efektu “łał”.

To najbardziej kultowa książka, ale niestety nie ma jakiejś magicznej literatury, która gwarantuje sukces. Poza tym musisz odróżnić podejście teoretyczne (np. udowodnij, że dany algorytm ma złożoność O(nlogn)) od praktycznego (król Bajtomir …). Literatura, siłą rzeczy, jest bardziej teoretyczna.

Z Cormena polecałbym zaprzyjaźnienie się ze schematami. W moim odczuciu są klarowne, tzn. łatwo było mi zrozumieć działanie - bo ja wiem - wyznaczania otoczki wypukłej czy problemów dla sieci przepływowych. Fajne są też przykłady: polecam robić wszystko, od byle sortowań, na kartce. Z pełnym zrozumieniem: dlaczego tak, co to daje itd. Może dużo pisania na papierze gdy 10 razy sortujesz coś insertion sortem, ale za to w końcu kod staje się intuicyjny i szybciej klepiesz + widzisz rzeczy algorytmiczne.

Bardzo fajne źródła zlinkował @quenthui. Dodałbym https://eduinf.waw.pl/inf/alg/001_search/index.php12 . Cenię sobie https://www.youtube.com/channel/UCZCFT11CWBi3MHNlGf019nw6 , ale esencja algorytmów jest też zawarta w różnego rodzaju materiałach typu https://www.youtube.com/watch?v=TyWtx7q2D7Y6 .

Są oczywiście inne pozycje, ale na start masz tu podane aż nadto, a inne znajdziesz z czasem sam. Choćby na forum. Na start polecam Tarnów bo w zasadzie jak to opanujesz, roztrzaskasz wszystkie łatwe + większość średnich + kilka trudnych.

To teraz spoza algo.

Początkującym w kwestiach technicznych zalecam https://www.cplusplus.com/reference/2 a zaawansowanym https://en.cppreference.com/w/1 + odpowiednie pdfy.

Jak zapomniało Ci się coś z matematyki i z jakiegoś powodu jej potrzebujesz, pierwszy strzał to zawsze Biblioteka Opracowań Matematycznych (chyba wydawnictwa Bila). Wszystkie inne źródła bierz pod uwagę gdy nie zadowalają Cię wymienione zeszyty.

Może warto zerknąć na Khan Academy (matma, może podstawy IT)? Oczywiście wersja english.

Może nie bez powodu? Jak wolisz: zastanów się, na ile potrzebujesz SPOJa i jakie zadania są Ci potrzebne. Jak dla zabawy i ile zdołasz to spoko, ale co do zasady niewielu ludzi wie co to jakieś rozkłady Gaussa bo niewielu ludziom to jest potrzebne. SPOJ to nie branża IT i w większości sytuacji się nie przydaje (moja opinia; więcej w pierwszym linku w tym poście).

PS
Znam człowieka, który sukcesy w algo- konkursach świętował X lat temu i jak to mówi, kiedyś był w tym świetny, ale od tego czasu mało ćwiczył, mało kodował i raczej obecnie nie kwapi się do tych tematów.

PS2
Kurcze, jednak sobie o czymś jeszcze przypomniałem :slight_smile:

Drzewo gry. W realu może nie jest najczęstsze, a już przy “byle” szachach są z nim problemy. Niemniej kodując sztuczną inteligencję w różnego rodzaju grach turowych (albo szerzej: problemach, które można do nich sprowadzić) warto znać ten twór bo może on sporo ułatwić.

1 month later

W dzisiejszych czasach nie jest problemem znaleźć źródło/a wiedzy lecz wręcz z ich nadmiarem i ich jakością. Nawet na spoju, można znaleźć wręcz bezcenne perełki, np Elementarz - wystarczy poszukać. To Ty jako użytkownik, musisz potrafić ocenić jakość i przydatność tych wszystkich żródeł. Nauczyć się korzystać z nich i studiować. Patrzeć na “ręce” autora - czy nie wprowadza Cię w maliny. Nikt ne zrobi tego za Ciebie, bo dla mnie bezcennym żródłem jest dzisiaj X a za jakiś czas może być żródło Y, a najczęściej nie jest to pojedyńcze źródło, ale nie znaczy że są one dobre i przydatne też tak samo dla Ciebie.

Poczytaj wątek Jak zostać PRAWDZIWYM PROGRAMISTĄ?, a tam linki, np “Poradnik początkującego programisty”.

Inne źródła -książki znajdziesz na zdjęciu półki w/w wątku.

4 months later

Hej.
Mam problem z tym zadaniem. Rozwiązuje prawidłowo wszystkie 477 testów od użytkownika @redysz, a mimo to sędzia nie przyjmuje.
Mój kod tu był.
Nieprawidłowy jest tylko iloczyn który do 50 do potęgi 10 działa prawidłowo(a może nie?).
Jakby się komuś chciało to mógłby zerknąć, będę bardzo wdzięczny.
Nie chodzi mi o dokładne badanie kodu, tylko może o znalezienie testu na którym popełnia błąd.
Dziękuję i pozdrawiam.

1
2 2 2 2
1 1 2 2

Takie coś znalazłem
Twój out: 50
Mój out: 1

Z treści wnioskuję, że taki zdegenerowany przypadek należy traktować jako brak liczby.

1 year later

Witam, męczę się z tym zadaniem już bardzo długo, a jednak wciąż dostaję w odpowiedzi od sędziego WA. Kod rozwiązuje prawidłowo 477 testów od użytkownika redysz. Ja sam już nie mam pomysłu, co może być przyczyną ciągłego odrzucania. Byłoby mi bardzo miło, jakby ktoś poświęcił odrobinę czasu na przeanalizowanie mojego programu.
Kod: usunięty

Dziękuje ci bardzo za podpowiedź. Musiałem sobie przeanalizować to zadanie jeszcze raz, teraz jest AC :grinning:.

7 months later

0 0 2 0
0 0 4 0
komputera nie trzeba, żeby widzieć kąt 0 to jak V??? W jaki sposób sędzia dał AC???
A bierki
1 1 4 4
2 2 5 5 tworzą X? czy jednak -?

wystarczą zmienne całkowite, używamy wzoru ogólnego na prostą i badamy położenie punktów względem niej (po “której są stronie” - geometria analityczna, szkoła średnia)

1 month later

Hej,

Z jakiej racji dla:

0 2 6 0
6 0 7 2

Ma być ‘-’ (tak jest w output.txt)?
Te 2 bierki mają wspólny punkt (6,0) i tworzą kąt ostry. Czyż nie powinno być zatem ‘V’?

narysuj te dwie bierki na układzie współrzędnych i zaznacz ten kąt ostry

przyłóż ekierkę albo kątomierz do monitora w takim razie jeżeli jest tam 82 stopni :slight_smile:

Albo narysuj dodatkowy odcinek (0, 3) (6, 0)
Lub (6, 0) (7, 3) … A uzyskany nowy kąt będzie ostrzejszy od twojego ale nie wystarczająco ostry ::=)

Kąt pomiędzy tymi odcinkami wynosi 98.1301 stopnia. Można to łatwo policzyć z własności iloczynu skalarnego. Kąt, który Ty podajesz to nie jest kąt pomiędzy odcinkiem AB i CD. Jest to kąt pomiędzy odcinkiem CD i przedłużeniem odcinka AB.

W zasadzie to nie potrzeba aż takiej armaty jak twierdzenie cosinusów, wystarczy iloczyn skalarny. Nawet można by wykorzystać twierdzenie Pitagorasa. No, ale co kto lubi…