infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Stefan Istrate din Martie 27, 2010, 13:42:13



Titlul: 1003 Transport2
Scris de: Stefan Istrate din Martie 27, 2010, 13:42:13
Aici puteți discuta despre problema Transport2 (http://infoarena.ro/problema/transport2).


Titlul: Răspuns: 1003 Transport2
Scris de: S. Alex din Martie 31, 2010, 18:58:14
de ce e limita de timp mai mica decat la moisil? 0.5 si nu 0.6 ?  ???


Titlul: Răspuns: 1003 Transport2
Scris de: Daniel Mihalca din Martie 31, 2010, 19:45:21
Poate ca zic gresit, dar aici se testeaza pe un server de Linux si merge mai repede (cred :-k).


Titlul: Răspuns: 1003 Transport2
Scris de: S. Alex din Martie 31, 2010, 21:23:00
a! se poate.. da oricum un dijkstra modificat implementat pe set ia 80...  :thumbdown:  :fighting: oh well  ??? lasa ca is mai simple celelalte variante nush de ce ma incapatanez eu  :D


Titlul: Răspuns: 1003 Transport2
Scris de: Andrei Misarca din Aprilie 01, 2010, 08:11:44
a! se poate.. da oricum un dijkstra modificat implementat pe set ia 80...  :thumbdown:  :fighting: oh well  ??? lasa ca is mai simple celelalte variante nush de ce ma incapatanez eu  :D

Având în vedere că trebuie să extragi minimul la fiecare pas, de ce folosești set (un arbore binar echilibrat), când poți folosi un priority_queue (care este implementat pe un heap)? Constanta operațiilor pentru set este mult mai mare decât pentru un heap, de aici vine ineficiența.


Titlul: Răspuns: 1003 Transport2
Scris de: S. Alex din Aprilie 01, 2010, 10:41:22
ok mersi, o sa incerc si asa, acuma faceam o binara si ceva mi se pare ca nu e in regula ...
si anume.. am rulat testele la mine pe aceeasi timp ( am rulat si sursa mea si una din sursele oficiale ) ambele iau 100..
daca trimit sursele aici iau pe sursa mea 50 si pe cea oficiala ( data ca si solutie , aia cu binara ) doar 40 ..
eu pe sursa mea iau TLE aici pe infoarena pe unele teste, cea oficiala Killed by Signal ...
as fi recunoscator daca m-ar lamuri cineva, multumesc anticipat

later edit: sursa mea era gresita, never mind ! ;)) cat despre cea oficiala nush zau
second later edit: merge si dijkstra pe set-uri ( ia 100 ) daca nu memorezi muchiile alea asa cum numa eu am reusit  :thumbdown: dar tot o sa incerc cum ai zis tu mai sus, mersi de idee, ca tot e mai eficient asa cred..


Titlul: Răspuns: 1003 Transport2
Scris de: speedzeal din August 08, 2010, 14:01:36
Am fakut 3 surse care doar citesc( datele de intrare ) si scriu( rezultat 0), una cu functii din C si alta  cu streamuri, ambele iau TLE pe testul 9, iar citirea cu parsare imi da TLE pe testul 8 si 9.

http://infoarena.ro/job_detail/475782?action=view-source
http://infoarena.ro/job_detail/475784?action=view-source
http://infoarena.ro/job_detail/475797?action=view-source

 ???


Titlul: Răspuns: 1003 Transport2
Scris de: Simoiu Robert din August 08, 2010, 22:28:57
Nu pot vedea programul, imi poti da primul de acolo ? Merci .


Titlul: Răspuns: 1003 Transport2
Scris de: speedzeal din August 09, 2010, 12:13:58
Nu pot vedea programujkl, imi poti da primul de acolo ? Merci .
Imi lua mult timp cand faceam functia push_back de la vector din STL, am alocat dinamic cu pointeri (c++ clasic) si a mers ok citirea si scrierea in timp.


Titlul: Răspuns: 1003 Transport2
Scris de: Salajan Razvan din Iunie 25, 2011, 11:50:20
Nu inteleg de ce iau doar 10 pct;
am facut algoritmul lui kruskal doar ca acum sortez muchiile in functie de cost in ordine descrescatoare si apoi iau muchia cu cel mai mic cost din arbore partial...


Titlul: Răspuns: 1003 Transport2
Scris de: Mihai Calancea din Iunie 25, 2011, 13:32:46
Pai nu e corect sa iei muchia minima din apm-ul ala fiindca nu stii daca are vreo treaba cu un drum de la 1 la n.

1 3 5000
1 2 3000

Raspunsul tau e 3000 aici?


Titlul: Răspuns: 1003 Transport2
Scris de: Salajan Razvan din Iunie 25, 2011, 16:02:54
da, e 3000.


Titlul: Răspuns: 1003 Transport2
Scris de: Macarescu Sebastian din Februarie 03, 2012, 17:08:29
Nu puteti mari limita la timp  :?? Am implementat dijkstra cu priority_queue si iau 90  ](*,). Vad ca in ultimul timp doar o persoana a reusit sa obtina 100.


Titlul: Răspuns: 1003 Transport2
Scris de: FMI Ciprian Olariu din Februarie 04, 2012, 15:51:59
Nu puteti mari limita la timp  :?? Am implementat dijkstra cu priority_queue si iau 90  ](*,). Vad ca in ultimul timp doar o persoana a reusit sa obtina 100.

Da,chiar cred ca ar trebui marita  :-s Eu am facut cautare binara dupa rezultat si DFS pentru verificarea unei anumite greutati si iau 80 chiar si cu citire parsata  :thumbdown:


Titlul: Răspuns: 1003 Transport2
Scris de: George Popoiu din Februarie 04, 2012, 17:15:19
Nu trebuie marita. Am luat 100p cu Dijkstra cu parsare, heap-uri "de mana" si liste "de mana".


Titlul: Răspuns: 1003 Transport2
Scris de: Macarescu Sebastian din Februarie 04, 2012, 17:27:53
Nu mi se pare corect faptul ca trebuie sa parsez( adica sa implementez o "bulaneala" cum zic altii) pentru a lua 100  :x. Nu vad de ce nu ar putea fi marita atat timp cat departajeaza corect solutiile.  :?


Titlul: Răspuns: 1003 Transport2
Scris de: Mihai Calancea din Februarie 04, 2012, 19:05:32
Solutia cea mai buna e O(M log*N), vedeti, probabil asta merge.


Titlul: Răspuns: 1003 Transport2
Scris de: Alghisi Alessandro Paolo din Ianuarie 31, 2013, 20:21:18
Nu trebuie marita. Am luat 100p cu Dijkstra cu parsare, heap-uri "de mana" si liste "de mana".

Intra in timp si Dijkstra cu parsare doar  :)


Titlul: Răspuns: 1003 Transport2
Scris de: Avramescu Cristian din Mai 13, 2013, 19:15:32
Buna ziua,
Ma chinui la problema de ceva timp si nu reusesc sa iau decat 90 :oops: . Am facut cautare binara +DFS + parsare . Se poate lua 100 cu idee asta  sau trebuie sa o schimb  ?
Multumesc anticipat!


Titlul: Răspuns: 1003 Transport2
Scris de: Pirtoaca George Sebastian din Mai 13, 2013, 19:40:56
Incearca sa folosesti BFS in loc de DFS, eu asa am luat 100. Succes!  :)


Titlul: Răspuns: 1003 Transport2
Scris de: Avramescu Cristian din Mai 13, 2013, 20:06:25
 :yahoo: a mers. Mersi! :D


Titlul: Răspuns: 1003 Transport2
Scris de: Florin Gabriel Haja din Martie 03, 2017, 22:24:56
:angry: Am încercat în toate felurile mai eficiente: DFS iterativ şi căutare binară, BFS şi căutare binară, BFS fără căutare binară (cu formulă), Dijkstra cu set-uri. Citirea o PARSEZ. :angry: Dar nicicum nu scap de două TLE-uri :angry:. Să fac heap-ul de mână (ar însemna să am sursa în jur de ~3 kB)? :


Titlul: Răspuns: 1003 Transport2
Scris de: Mihai Calancea din Martie 03, 2017, 23:06:57
Am marit limita de timp, fiindca era intr-adevar prea stransa. Am reevaluat cea mai recenta sursa si ai luat 100.

Totusi, cateva observatii:

- Set-ul are constanta mare, Dijkstra cu priority_queue se comporta mai bine de obicei.
- Bellman-Ford are complexitate N * M.
- Daca faci cautare binara, trebuie doar sa verifici ca poti ajunge in N, vad ca tu in unele surse calculezi si drumul minim pentru chestia asta.
- Nu ai de ce sa te astepti ca o coada implementata cu array-uri care face modulo la fiecare pas sa se comporte mai bine decat queue<>. Modulo-ul e foarte costisitor. Also, ai pus marimea la coada 66000, ceea ce e o greseala, desi n-au prins-o testele.
- Nu inteleg la ce te referi cu "fara cautare binara (cu formula)".
- Parsarea ta nu e ideala la problema asta fiindca sunt multe linii cu putine numere per linie.
- Cea mai rapida solutie la problema asta asimptotic vorbind (si cred ca si in practica) este sa sortezi muchiile dupa cost, sa le adaugi pe rand si sa te opresti cand sursa si destinatia devin conectate. Ca sa verifici conectivitatea tii paduri de multimi disjuncte.
 


Titlul: Răspuns: 1003 Transport2
Scris de: Florin Gabriel Haja din Martie 04, 2017, 13:06:40
Citat din mesajul lui: Mihai Calancea
Nu inteleg la ce te referi cu "fara cautare binara (cu formula)".
1. M-am referit la relația de recurență ca în soluția oficială, pentru a găsi muchia minimă din lanțul maximal.

Citat
- Daca faci cautare binara, trebuie doar sa verifici ca poti ajunge in N, vad ca tu in unele surse calculezi si drumul minim pentru chestia asta.
2. Am trimis și fără să calculez costul minim, dar mi-a dat 50 cu câteva WA-uri.

Citat
- Set-ul are constanta mare, Dijkstra cu priority_queue se comporta mai bine de obicei.
3. Nu sunt învățat să folosesc priority_queue. E mai greu de declarat (?)

Citat
- Cea mai rapida solutie la problema asta asimptotic vorbind (si cred ca si in practica) este sa sortezi muchiile dupa cost, sa le adaugi pe rand si sa te opresti cand sursa si destinatia devin conectate. Ca sa verifici conectivitatea tii paduri de multimi disjuncte.
4. Soluția cu păduri de mulțimi disjuncte obținea 100 de puncte și înainte de a mări limita de timp?