GRY-Online.pl --> Archiwum Forum

Zadanie - pomoc z algorytmem

05.01.2008
21:15
[1]

master53 [ Senator ]

Zadanie - pomoc z algorytmem

Wątek do usunięcia.

05.01.2008
21:27
[2]

eLJot [ a.k.a. księgowa ]

Twój algorytm jest chyba najgorszy z możliwych. (Jeśli dobrze zrozumiałem)

Może masz to zapisane w schemacie blokowym?

05.01.2008
21:40
[3]

master53 [ Senator ]

Niestety nie mam tego profesjonalnie rozrysowanego, a że nigdy nie rysowałem tego typu schematów, to obawiam się, że nie wiele można by było z tego zrozumieć.

05.01.2008
21:43
[4]

eLJot [ a.k.a. księgowa ]

Z Twoich wypocin też niewiele można zrozumieć :P A chyba nie myślisz, że ktoś za Ciebie rozwiąże problem na poważne zawody (chyba nawet ogólnokrajowe)
Możemy pogadać po 7 stycznia ;)

05.01.2008
21:47
[5]

master53 [ Senator ]

eLJot --> Ależ chętnie z Tobą porozmawiam. A więc do wtorku ;)

Może ktoś chciałby udzielić jakiejś małej wskazówki ?

05.01.2008
23:11
[6]

Mazzop [ ]

ja bym z danych wejściowych utworzył 2 tablice - "poziomą" (L i P) i "pionową" (D i G) reprezentujące odcinki, i przy analizowaniu każdego zdjęcia zwiększanie (zliczanie zdjęć pokrywających dany odcinek) odpowiednich elementów w obu tablicach, no i w wejściu będzie max z iloczynu każdy element z tablicy "poziomej" przez każdy z "pionowej"

05.01.2008
23:20
[7]

Mazzop [ ]

a nie, pokręciłem :D, bzdura wyszła

05.01.2008
23:21
[8]

master53 [ Senator ]

No właśnie coś mi się nie zgadzało :)

05.01.2008
23:25
[9]

Scatterhead [ łapaj dzień ]

Mazzop dobrze mysli, zrzutuj sobie te wspolrzedne na poziome i pionowe, dzieki temu lepiej ebdzie kombinowac.

05.01.2008
23:27
[10]

Mazzop [ ]

pomysł zastępczy ze 160 miliardami kwadratów i potem max po nich też coś nie teges :)

05.01.2008
23:31
[11]

master53 [ Senator ]

Na początku myślałem, aby porównać pierwszy zestaw współrzędnych z resztą, jeśli się zgadza to zwiększyć licznik o 1 i tak po kolei, ale jest jeden przypadek, w którym takie rozwiązanie się gubi. Mianowicie jeśli na dane zdjęcie zachodzą 2 inne, ale nie nachodząc na siebie. Czyli zdjęcia 2 i 3 nachodzą na zdjęcie 1, ale nie nachodzą na siebie. Wtedy licznik zliczyłby to błędnie, a przecież nie da się w takim przypadku przypiąć tych 3ch zdjęć jedną szpilką i tu pies pogrzebany.

05.01.2008
23:34
[12]

kamyk_samuraj [ Senator ]

Masz wspolrzedne czterech punktow (zdjecie)
A B

C D
By szpilka wypadla w obrebie zdjecia, to wspolrzedna xszpilki musi byc Ax=<Xszpilki=<Bx (albo Cx<=xszpilki=<Dx) oraz wspolrzedna yszpilki Cy=<Yszpilki=<Ay.

W zadaniu masz dwa rogi - ale, jako, ze zdjecie to prostokat to Ax=Cx, Bx=Dx i tak dalej, wiec nie sa co potrzebne wszystkie.

05.01.2008
23:34
[13]

Scatterhead [ łapaj dzień ]

jeszcze jedna podpowiedz: jezeli sobie zrzutujesz wszystkie zmienne na jedna linie, czyli wszystkie X posortujesz od najmniejszego do najwiekszego z zachowaniem tego ktory z punktow jest koncem a ktory poczatkiem masz prosty algorytm na znalezenie miejsca przeciecia sie najwiekszej liczby kwadratow:

masz licznik M = 0
zmienna X=0 ktora wskazuje na poczatek miejsca gdzie znajudje sie najwiecej miejsc do przeciecia
oraz XX ktora zawiera informacje ile zdjec tam przetniesz maksymalnie

i lecisz od poczatku do konca, zwiekszajac licznik M o 1 jezeli przechodzisz przez punkt poczatku zdjecia lub zmniejszasz o 1 jezeli dochodzisz do konca jakiegos zdjecia. Jezeli zwiekszyles M o jeden i jest to wieksza liczba niz XX to ustawiasz XX na M oraz miejsce X na to w ktorym jestes.

Tym sposobem mozesz przeleciec X i Y, ale musisz jescze polaczyc te dwa wyniki na raz

05.01.2008
23:37
[14]

M@RCO [ Centurion ]

Stary :/ twoje myśli są tak chaotyczne, że szok.
Dobra rada. Porzuć dotychczasowy pomysł i zrób algorytm w postaci schematu blokowego jak to eLJot już pisał. Wtedy możesz nam przekazać swoją myśl. Nikt pozatym nie zrobi Ci czegoś na konkurs stary, jeżeli masz za to laury zbierać a w przyszłości nie będziesz z tego nic wiedział to nie ma sensu -.- wróć z "klockami"

05.01.2008
23:47
[15]

kamyk_samuraj [ Senator ]

Ach - chodzi tylko o maksimum... To masz doradzone w [13]. Zaczalem czytac i od razu pomyslalem, ze na koncu sam wbijasz szpilke....

06.01.2008
00:14
[16]

Mazzop [ ]

Scatterhead - nie widzę jak informacja o X,XX i Y,YY miałaby dać wynik, nie wspominając, że każde zdjęcie zostanie policzone 2 razy

06.01.2008
00:24
[17]

Scatterhead [ łapaj dzień ]

Mazzop -> zle sie wczytales, wynikiem bedzie X gdzie bedzie poczatek miejsca gdzie przecina sie najwiecej kwadratow na jednych wspolrzednych

06.01.2008
00:33
[18]

master53 [ Senator ]

Scatterhead ->

oraz XX ktora zawiera informacje ile zdjec tam przetniesz maksymalnie

Ale skąd wzięło się XX ? Przecież właśnie szukaną jest maksymalna liczba przecięć.

06.01.2008
00:47
[19]

eLJot [ a.k.a. księgowa ]

Scatterhead - Twój tekst jest jeszcze gorszy od tego z 1 postu :(

Raz: To nie są kwadraty!
Dwa: Twój "algorytm" sypnie się już w takim przypadku -->


Zadanie - pomoc z algorytmem - eLJot
06.01.2008
01:33
[20]

Scatterhead [ łapaj dzień ]

elJot ->

"Twój "algorytm" sypnie się już w takim przypadku"

dla Y: da wynik 2 i miejsce przecieca na poczatku prostokata ponizej
dla X: da wynik 1 i miejsce przeciecia na lewym prostokacie

06.01.2008
01:52
[21]

eLJot [ a.k.a. księgowa ]

Scatterhead
dla Y: da wynik 2 i miejsce przecieca na poczatku prostokata ponizej
dla X: da wynik 1 i miejsce przeciecia na lewym prostokacie


I jaki to ma związek z rozwiązaniem zadania?

06.01.2008
01:56
[22]

Scatterhead [ łapaj dzień ]

może to posłużyć jako droga do wymyślenia rozwiązania

06.01.2008
02:01
[23]

eLJot [ a.k.a. księgowa ]

Jakim cudem?

Spróbuj ten --->


W obu przypadkach rozwiązaniem jest 1, tylko nie wiem jak chcesz dojść do takiego wyniku.


Zadanie - pomoc z algorytmem - eLJot
06.01.2008
02:03
[24]

GBreal.II [ floydian ]

Ja najpierw policzysz po x'ach a pozniej po igrekach, to rzeczywiscie, nie wywnioskujesz. Trzeba to robic inaczej.

06.01.2008
02:16
[25]

Scatterhead [ łapaj dzień ]

Jak dodasz do odejmowania i dodawania +1 sprawdzanie czy kwadraty, ktorych wierzcholki sie przecinaja to rozwiaze sprawe? (nie sprawdzalem tego, tak tylko strzelam)

06.01.2008
02:21
[26]

eLJot [ a.k.a. księgowa ]

Scatterhead - wiem, że jest późno, ale teraz to mnie zaczynasz denerwować.
To nie są kwadraty.
Zrozum wreszcie, że nie możesz rozdzielić rzędnych i odciętych współrzędnych wierzchołków, bo nigdy nie dowiesz, czy dane prostokąty maja wspólną część!

06.01.2008
02:39
[27]

Scatterhead [ łapaj dzień ]

kwadraty, prostokaty wiadomo o co chodzi.

Zrozum wreszcie, że nie możesz rozdzielić rzędnych i odciętych współrzędnych wierzchołków, bo nigdy nie dowiesz, czy dane prostokąty maja wspólną część!

jezeli stworze takie tablice dla dwoch prostokatow

X:

P1: 0
P2: 4
K1: 5
K2: 6

Y:

P1: 0
K1: 4
P2: 5
K2: 7

i majac tablice elementow indeksowana numerami prostokatow, to w czym mi to przeszkadza zeby sprawdzic czy sie przecinaja?

06.01.2008
02:50
[28]

Ramz [ Generaďż˝ ]

Scatterhead - sortowanie raczej odpada, bo najszybszym sposobem wyjdzie n(logn) a dla n =100000 to calkiem spory czas i do tego 2 takie listy :)

Tak sobie siadlem teraz i pomyslalem o jakims podziale docelowej tabicy(tej ze zdjecimi) na mniejsze kwadraty (czesci). Te czesci zawieraly by wskazniki na rzeczywiste zdjecia ktore znajda sie w danej czesi tablicy. nastepnie sprawdzamy punkt przeciecia sie tylko w danej czesci tablicy (co dosc znacznie zmniejszy ilosc porownan). Przy tym dochodzi brak sortowania, a wszystko robimy podczas wczytywania danych.

PS. Taki cos stosuje sie w grach, przy podzialach sceny np. do szybkiego liczenia kolizji (z tym ze tam sa stosowane rozne rodzaje drzew).

06.01.2008
17:14
smile
[29]

master53 [ Senator ]

Już sam opracowałem wydajny algorytm, który to zlicza. Jakoś nie mogłem zrozumieć myśli ukrytej w waszych postach, ale i tak dziękuję za fatygę :)

Pozdrawiam.

06.01.2008
18:23
smile
[30]

eLJot [ a.k.a. księgowa ]

master - pochwalisz się później?

06.01.2008
22:00
smile
[31]

master53 [ Senator ]

eLJot -> Możemy pogadać po 7 stycznia ;)

Edit: Tak w skrócie sprawdzałem po kolei każdą współrzędną względem reszty jaka została. Przykładowo dla tego przykładowego wejścia:

-1 -1 1 2
0 -2 3 0
2 2 3 3
-1 -1 1 2
2 -1 4 1

Sprawdzałem -1 -1 1 2 z resztą współrzędnych, potem 0 -2 3 0 z resztą itd. Przy czym uwzględniłem przypadki gdzie większe zdjęcie, może być pokrywane przez mniejsze tak, że mniejsze nie wystaje poza obręb większego oraz gdy na sprawdzane zdjęcie nachodzą 2 zdjęcia, ale jednak nie pokrywają siebie tylko sprawdzane zdjęcie.

Edit2: Fajnie jeśli komuś by się chciało potestować mój program.

© 2000-2025 GRY-OnLine S.A.