Forum Informatyka UJ forum Strona Główna Informatyka UJ forum
Rocznik 2005 - czyli najlepsze forum w sieci
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

J* - Punkty
Idź do strony 1, 2  Następny
 
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Algorytmy i Struktury Danych
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
exeman
Mistrz grilla



Dołączył: 03 Lut 2006
Posty: 1603
Przeczytał: 0 tematów

Skąd: znienacka

PostWysłany: Nie 23:22, 26 Mar 2006    Temat postu: J* - Punkty

[link widoczny dla zalogowanych]

Co o tym myslicie? Ja tu widze jakies grafy :P
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
hansu
Nieomylny Admin



Dołączył: 17 Lis 2005
Posty: 1990
Przeczytał: 0 tematów

Skąd: przychodzimy? Czym jestesmy? Dokad zmierzamy?

PostWysłany: Nie 23:40, 26 Mar 2006    Temat postu:

Zwyczajne zadanie na divide and conquer... Troche sie trzeba bedzie pomeczyc nad 3 krokiem ale tak to rekurencja zalatwi sprawe... (chyba bo jeszcze nie myslalem nad tym zadaniem szczegolnie)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
exeman
Mistrz grilla



Dołączył: 03 Lut 2006
Posty: 1603
Przeczytał: 0 tematów

Skąd: znienacka

PostWysłany: Nie 23:43, 26 Mar 2006    Temat postu:

hansu: mysle, ze tym sposobem bedzie TLE.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mateo
pijak



Dołączył: 08 Mar 2006
Posty: 296
Przeczytał: 0 tematów

Skąd: Krk - Biały Prądnik

PostWysłany: Nie 23:52, 26 Mar 2006    Temat postu:

exeman napisał:
hansu: mysle, ze tym sposobem bedzie TLE.


A czemu niby uwazasz ze rekurencja nie przejdzie?? mozna o oczywiscie napisac bez rekurencji ale rekurencyjnie jest znacznie wygodniej, a ja jakos nie widze tego zeby to mialo byc jakos znacznie wolniejsze.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
exeman
Mistrz grilla



Dołączył: 03 Lut 2006
Posty: 1603
Przeczytał: 0 tematów

Skąd: znienacka

PostWysłany: Nie 23:57, 26 Mar 2006    Temat postu:

Mateo: nie chodzilo mi o sama rekurencje, ale o sama idee wyszukiwania binarnego. Wydaje mi sie, ze poprostu nie tedy droga.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Robson
zielony żul



Dołączył: 21 Paź 2005
Posty: 1274
Przeczytał: 0 tematów

Skąd: Z Lasu :]

PostWysłany: Pon 0:49, 27 Mar 2006    Temat postu:

Chyba was zmartwie, ale ta gwiazdka nie jest przypadkowa w tym zadaniu. I wydaje mi sie że może to zadanie byc bardziej upierdliwe niz takie A naprzykład, bo jesli sie nie mylę to jest to książkowy przykład na algorytm zamiatania, gdzie trzeba użyć zrównoważonego drzewa, np AVL. I stad sie chyba bierze jego gwiazdka...
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mateo
pijak



Dołączył: 08 Mar 2006
Posty: 296
Przeczytał: 0 tematów

Skąd: Krk - Biały Prądnik

PostWysłany: Pon 1:06, 27 Mar 2006    Temat postu:

Robson napisał:
wydaje mi sie że może to zadanie byc bardziej upierdliwe niz takie A naprzykład, bo jesli sie nie mylę to jest to książkowy przykład na algorytm zamiatania, gdzie trzeba użyć zrównoważonego drzewa, np AVL.


Ale wy sobie lubicie zycie utrudniac. Owszem to zadanie to klasyczny przyklad na algorytm zamiatania ktory uzywa AVL, RB-tree lub jakiegokolwiek innego drzewa zrownowazonego.
Ale jednoczesnie jest to takze klasyczny przyklad na algorytm typu divide&conqueer, gdzie nie stosuje sie zadnych skomplikoanych struktur danych i robi sie to poprzez zwykla rekurencje.

Oba te algorytmu dzialaja w czasie nlgn, a jesli sie nie myle to metoda dziel i zwyciezaj ma chyba mniejsza stala. Jak chcecie to sobei robcie te AVLe, ale wedlug mnie mija sie to raczej z celem...
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Madras
Omylny Admin



Dołączył: 09 Lis 2005
Posty: 2021
Przeczytał: 0 tematów

Skąd: Z Pokoju :]

PostWysłany: Pon 1:47, 27 Mar 2006    Temat postu:

Cormen s. 1013 i po zadaniu ;).
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mateo
pijak



Dołączył: 08 Mar 2006
Posty: 296
Przeczytał: 0 tematów

Skąd: Krk - Biały Prądnik

PostWysłany: Pon 15:31, 27 Mar 2006    Temat postu:

Madras napisał:
Cormen s. 1013 i po zadaniu


Albo Diks s. 272 (dla tych ktorzy preferuja drzewa AVL :P)

ja tam jednak wole metode dziel i zwyciezaj bo jest prosta w implementacji i jak widac mozna bez problemu bez gwiazdki przepchnac.

PS. w testerce na virgo zrobilem podobnie jak przy zadaniu F ze jest udostepniony generator losowych testow oraz kwadratowa wzorcowka (zeby byla pewnosc ze wyniki beda poprawne), wiec jak cos to mozna sobie generowac testy z n <= 10000
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Robson
zielony żul



Dołączył: 21 Paź 2005
Posty: 1274
Przeczytał: 0 tematów

Skąd: Z Lasu :]

PostWysłany: Pon 17:31, 27 Mar 2006    Temat postu:

na pierwszy rzut oka wydaje mi się że obie metody są równie pokręcone (znaczy sie są logiczne i bazuja na podobnym pomysle, tylko implementacja jest skomplikowana)...
jeszcze nie wiem która lepsza, i nie zamierzam sie tym zajmować aż do weekendu, bo nie mam czasu, ale jakby co to chyba zrobie AVL drzewka - kiedys w koncu trzeba przez to w zyciu przejść ;)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Adams
pijak



Dołączył: 19 Sty 2006
Posty: 58
Przeczytał: 0 tematów


PostWysłany: Sob 5:13, 01 Kwi 2006    Temat postu:

Ten algorytm z Cormena spokojnie przechodzi. Dodałem sobie jeszcze ładne sortowanie danych po wczytaniu i wszystko śmiga jak burza. Moim zdaniem nie ma sensu udziwniać tego zadania drzewkami AVL...

Uwaga na typ odległości. Dla skrajnie dalekich punktów, może przekroczyć longinta. Mówię, bo sam to sobie uświadomiłem tuż przed wysłaniem zadania :P
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Robson
zielony żul



Dołączył: 21 Paź 2005
Posty: 1274
Przeczytał: 0 tematów

Skąd: Z Lasu :]

PostWysłany: Śro 23:47, 05 Kwi 2006    Temat postu:

Chciałem zapytać jak poradziliście sobie jesli jekies (wiecej niz jeden) punkty leżą na prostej podziału? Bo ja mam juz niezłego zwisa. Punkty pamietam tak jak ma być: Raz posortowane po x-ach w drugiej tablicy po y-kach. Czy moze to jest obojętne do którego przediału wpadają jakie y-ki?

Np taki przykład:

posortowane x: (0,1) (1,2) (2,5) (2,4) (2,3) (4,8 ) (5,4) (5,1);

posortowane x: (0,1) (5,1) (1,2) (2,3) (5,4) (2,4) (2,5) (4,8 );

i teraz robie unmerge według (2,4):
(0,1) (1,2) (2,3) (2,4)
(5,1) (5,4) (2,5) (4,8 )
no i wtej pierwszej tablicy są pary, które nie wystepuja w posortowaniu według x-a z lewej strony pary (2,3). Czy to moze zaważyć na algorytmie w jakiś sposob, skoro z tablicy x-a kozystamy tylko do wybrania elementu dzielącego? czy wystarczy tylko zadbać o to zeby była równowaga tych tablic?
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Rogal
Zjeb z kaszanką



Dołączył: 13 Mar 2006
Posty: 1745
Przeczytał: 0 tematów

Skąd: koło podbiegunowe

PostWysłany: Czw 0:00, 06 Kwi 2006    Temat postu:

Adams napisał:
Ten algorytm z Cormena spokojnie przechodzi. Dodałem sobie jeszcze ładne sortowanie danych po wczytaniu i wszystko śmiga jak burza. Moim zdaniem nie ma sensu udziwniać tego zadania drzewkami AVL...

Uwaga na typ odległości. Dla skrajnie dalekich punktów, może przekroczyć longinta. Mówię, bo sam to sobie uświadomiłem tuż przed wysłaniem zadania :P


Ja przechowuję kwadraty odległości - i ta wartość może przekroczyć int64 :shock: Na szczęście jest qWord.


Robson napisał:
Np taki przykład:

posortowane x: (0,1) (1,2) (2,5) (2,4) (2,3) (4,8 ) (5,4) (5,1);

posortowane x: (0,1) (5,1) (1,2) (2,3) (5,4) (2,4) (2,5) (4,8 );

i teraz robie unmerge według (2,4):
(0,1) (1,2) (2,3) (2,4)
(5,1) (5,4) (2,5) (4,8 )


Ja dołożyłem do tego tablicę boolowską o długości n, w której przy dzieleniu tablicy X na dwie podtablice ustawiam elementom o odpowiednich indeksach wartości true / false zależnie czy są w lewej czy prawej podtablicy.

A przy takim podziale, tj. że tablice X i Y po podziale mają różne elementy w różnych połówkach - prawie na pewno coś się zwali.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Robson
zielony żul



Dołączył: 21 Paź 2005
Posty: 1274
Przeczytał: 0 tematów

Skąd: Z Lasu :]

PostWysłany: Czw 1:32, 06 Kwi 2006    Temat postu:

No i pewnie miałeś racje.. jak narazie ans, ale nie chce mi sie szukać dziur dzisiaj ;) i tak dobrze poszło - 2h i punkt zaczepienia mam ;)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
hansu
Nieomylny Admin



Dołączył: 17 Lis 2005
Posty: 1990
Przeczytał: 0 tematów

Skąd: przychodzimy? Czym jestesmy? Dokad zmierzamy?

PostWysłany: Czw 1:40, 06 Kwi 2006    Temat postu:

A ja to robie na listach wiazanych... Tzn na najnizszym poziemie rekurencji, gdy mam 2 albo trzy punkty tworze z nich posortwana liste wiazana... A na wyzszych poziomach odbieram od nizszych dwie listy i robie im merga... Dziala bardzo dobrze tylko trzeba sie w listach nie pogubic :)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Robson
zielony żul



Dołączył: 21 Paź 2005
Posty: 1274
Przeczytał: 0 tematów

Skąd: Z Lasu :]

PostWysłany: Czw 1:57, 06 Kwi 2006    Temat postu:

Sięgnąłem do testerki mateo... powiedzcie mi co znaczy jak mam ans i pisze [expected: ...] [received: ...] ?
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
hansu
Nieomylny Admin



Dołączył: 17 Lis 2005
Posty: 1990
Przeczytał: 0 tematów

Skąd: przychodzimy? Czym jestesmy? Dokad zmierzamy?

PostWysłany: Czw 2:10, 06 Kwi 2006    Temat postu:

To znaczy ze Twoj program dal odpowiedz (received) inna niz oczekiwana (expected).
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Robson
zielony żul



Dołączył: 21 Paź 2005
Posty: 1274
Przeczytał: 0 tematów

Skąd: Z Lasu :]

PostWysłany: Czw 7:35, 06 Kwi 2006    Temat postu:

no ok, ale dlaczego kropeczki, a nie tak jak w innych przypadkach jakieś liczby? Swoją drogą mam naprawde dziwny błąd bo moj program zawsze podaje mniejsze odpowiedzi :P pewnie mam coś zrypane w liczeniu odległości (!) ;)
---------------------
Hehe juz wiem - u mnie daje dobre wyniki, a na virgo złe, bo jakiejś zmiennej nie inicjalizuję, albo znowu bląd z int64... jeszcze nie wiem dokładnie która zmienna ale sie dowiem :P
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mateo
pijak



Dołączył: 08 Mar 2006
Posty: 296
Przeczytał: 0 tematów

Skąd: Krk - Biały Prądnik

PostWysłany: Czw 20:47, 06 Kwi 2006    Temat postu:

Robson napisał:
Sięgnąłem do testerki mateo... powiedzcie mi co znaczy jak mam ans i pisze [expected: ...] [received: ...]


Heh, no wlasnei tez chcialbym to wiedziec....:) program do porownywania outputow pisalem pare lat temu i nie pamietam skad sie to moze brac. W poprzedniej wersji testerki byl uzywany zwykly diff z parametrami --ignore-blnak-lines i ignore-all-spaces czy jakos tak.... W tej drugiej sam napisalem swoj program do porownywania zeby podawal wstepnie co moze byc zle... (zeby nie trzeba bylo od razu do inputa wchodzic i szukac dokladnei na jakichch danych sie moglo wykrzaczyc... no bo czasem od razu wiadomo w czym moze tkwic blad). A te kropeczki... hmm :) jak sie skoncza te zwalone kolosy to zajrze do kodu i zobacze co tam moze byc nie tak.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Robson
zielony żul



Dołączył: 21 Paź 2005
Posty: 1274
Przeczytał: 0 tematów

Skąd: Z Lasu :]

PostWysłany: Czw 21:07, 06 Kwi 2006    Temat postu:

juz przeszło :) pare głupich naprawde byków strzeliłem i zrobiłem jeden kardynalny - nie scalałem podtablic jak wracałem z rekurencji - i sie sortowanie piepszyło - cóż o tym nie napisali w Cormenie explicite ;)

jeszcze raz wielkie dzieki Mateo za testerke, bo tak to bym siedział i pisał teraz własne generatory i wzorcówki na n^2 złożoności... a tak poszło szybko i bez zbednego bółu :)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
exeman
Mistrz grilla



Dołączył: 03 Lut 2006
Posty: 1603
Przeczytał: 0 tematów

Skąd: znienacka

PostWysłany: Nie 17:05, 23 Kwi 2006    Temat postu:

A ja mam taki problem.

1. Prog moj dziala na virgo, dla testow z malymi zakresami dziala, dla duzych juz daje zle wyniki. Stosuje QWordy, ale mimo wszystko zle dziala dla ogromnych odleglosci.

2. Jest wolny (TLE dla duzych testow), mimo, ze stosowalem algorytm Cormena, z jedna modyfikacja: Nie dziele Y na Y1 i Y2 (zeby pasowalo do X1, X2), tylko przekazuje do procki (rekurencyjnej) tylko lewy i prawy zakres z X, co mi daje odpowiedni przedzial po X, a ten Y wyliczam sobie przy wejsciu do procedury (wyciagam z globalnej tablicy posortowanej po y). Dziala, wolno, moze dlatego?

Pozdro :)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Madras
Omylny Admin



Dołączył: 09 Lis 2005
Posty: 2021
Przeczytał: 0 tematów

Skąd: Z Pokoju :]

PostWysłany: Nie 17:22, 23 Kwi 2006    Temat postu:

1. Sądzę, że wykonujesz działanie typu longint * longint, a dopiero potem wynik wpisujesz do QWorda. Jeśli masz -1000000 * -1000000, to wynik przekroczy zakres longint'a i dostaniesz śmieci. Dlatego trzeba najpierw zrzutować na większy typ (przynajmniej jedną ze zmiennych), a dopiero wykonywać działanie. Jednak jeśli użyjesz QWorda do tego celu, to konwersja będzie niepoprawna (QWord nie ma znaku), dlatego jedyne sensowne wyjście to użycie Int64. Co prawda ma dwukrotnie mniejszy zakres, jednak w tym zadaniu w zupełności on wystarcza. Ewentualnie przyczyną blędy może być kompilacja z optymalizacją, jeśli powyższe uwagi nie pomogą, to ściągnij testy do siebie, i sprawdź, czy zwykła kompilacja i kompilacja -OG2p3 daje takie same wyniki. Jeśli nie, to musisz popróbować ze wstawianiem x:=x w różnych miejscach kodu (najprawdopodobniej w okolicy rzutowania na int64/wykonywania na nich obliczeń), to już 2 osobom tego typu rzeczy się zdarzały.
2. W jakim czasie wyciągasz z globalnej tablicy, O( n )? Jeśli tak, to nie powinno być problemu przez to... Ja obie podtablice tworzyłem od nowa korzystając z tablic dynamicznych i mi przeszło wszystko.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
exeman
Mistrz grilla



Dołączył: 03 Lut 2006
Posty: 1603
Przeczytał: 0 tematów

Skąd: znienacka

PostWysłany: Nie 17:31, 23 Kwi 2006    Temat postu:

Madras: dzieki duzo pomoglo :)
Teraz mam RD8 w niektorych przypadkach, ale to juz raczej niestety sam musze sie pomeczyc :P
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Spectro
Mistrz grilla



Dołączył: 09 Mar 2006
Posty: 2306
Przeczytał: 0 tematów

Skąd: Kurdwanów

PostWysłany: Nie 18:02, 23 Kwi 2006    Temat postu:

O ile dobrze pamiętam, w treści zadania było zaznaczone, że punkty są parami różne. Natomiast w niektóych testach matea zdarzały się przypadki równych punktów i właśnie tam mój program dostawał runtimy ;) .
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Hetman
pijak



Dołączył: 06 Gru 2005
Posty: 127
Przeczytał: 0 tematów

Skąd: Ustka/Kraków

PostWysłany: Pon 0:36, 01 Maj 2006    Temat postu:

gdyby ktos mogl zapodac jak sciagnac testy to bylbym wdzieczny (sposob "standardowy" nie dziala:/ )
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Algorytmy i Struktury Danych Wszystkie czasy w strefie EET (Europa)
Idź do strony 1, 2  Następny
Strona 1 z 2

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Regulamin