Pagini: 1 [2]   În jos
  Imprimă  
Ajutor Subiect: 013 Petrica  (Citit de 21411 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
k_ounu_eddy
Vorbaret
****

Karma: -104
Deconectat Deconectat

Mesaje: 161



Vezi Profilul
« Răspunde #25 : Noiembrie 16, 2008, 01:06:28 »

Da ,ai dreptate.Nu am mai lucrat de mult cu arbori si am cam uitat.Ms  Smile

Am optimizat cat am putut,am folosit si 2 surse(una in care am memorat arborele cu liste de adiacenta,si alta in care am folosit o idee din articolul "Multe 'smenuri' de programare in C/C++"  Smile),si tot nu trec de 50p.Ce as putea sa fac?Precizez ca dupa ce calculez vectorul tati, am 3 foruri imbricate, cu I:2->n-2, J:I+1->n-1,K:J+1->n
PS:I:2->n-2  inseamna I ia valori de la 2 la n-2.

[Editat de moderator] Nu mai posta de 2 ori consecutiv, exista butonul "Edit"...
EDIT:M-am tot gandit la ce as putea sa fac,dar nu mi-a venit nici o idee.La ce mi-ar ajuta LCA,sau cum as putea sa tai al treilea nod "inteligent" ?.As putea sa folosesc niste algoritmi pt determinarea unui arbore de cost minim(Kruskal sau Prim).Va rog ,daca se poate,dati niste indicii.
« Ultima modificare: Noiembrie 19, 2008, 22:50:31 de către Iacob Eduard » Memorat
c_e_manu
Nu mai tace
*****

Karma: 56
Deconectat Deconectat

Mesaje: 243



Vezi Profilul
« Răspunde #26 : Martie 26, 2009, 09:13:59 »

Citat
numarul de locuitori din distructul cu cea mai mare populatie

Cred ca trebuia districtulSmile
Memorat
Sorin_Ionut
Client obisnuit
**

Karma: 14
Deconectat Deconectat

Mesaje: 53



Vezi Profilul
« Răspunde #27 : Martie 26, 2009, 10:38:25 »

Un algoritm randomizat poate lua 70-80 p daca il optimizati chiar si 90 la 100 nu am reusit sa ajung
Algoritmul randomizat alege 3 muchii si calculeaza diferentele (o solutie nu prea inteligenta dar care scoate niste pct pe testele care nu au solutie unica sau care au nr mic de noduri) (daca vreti sa va distrati recomand sa incercati)
Intrebarea era cum alegi aceea muchie dintre 2 noduri "inteligent" ?? ca sa ai N^3 ....
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #28 : Iulie 28, 2009, 18:00:35 »

Eu fac un DF pentru Sum[ i ] = populatia subarborelui cu radacina in nodul i si apoi incerc toate variantele de taiere . Am 10 puncte cu wa pe restul si nu prea imi dau seama de ce. Practic am aceeasi problema cu Filip Buruiana ( pagina 1 )  . Ma poate ajuta cineva , va rog ? Very Happy
Memorat
adysnook
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #29 : Ianuarie 17, 2010, 15:32:51 »

nu cumva problema ar trebui sa contina si un test cu maximul valorilor, asta insemnand 200 orase;
graf complet de 197 de noduri + 3 noduri conectate cu cate o muchie la 3 noduri distincte din graful complet
asta inseamna 197*196/2+3 muchii adica 19309 muchii, adica 19311 randuri in fisierul de intrare.
oare a fost facut un program performant si pentru asta?
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #30 : Ianuarie 17, 2010, 15:52:15 »

Citat
Petrica este presedintele unei tari cu N orase conectate prin strazi bidirectionale astfel incat exista un drum unic intre oricare doua dintre ele
Memorat
adysnook
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #31 : Ianuarie 17, 2010, 16:00:00 »

adica vrea sa spuna ca daca orasul 1 se conecteaza cu orasul 3 trecand prin orasul 2 asta inseamna ca nu poate exista un drum de la orasul 1 direct la orasul 3? asta inseamna ca tine strict de arbori. Multumesc
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #32 : Ianuarie 17, 2010, 19:46:34 »

Da, orasele si drumurile dintre orase reprezinta un arbore.
Memorat

Am zis Mr. Green
alexa_myparadise
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 5



Vezi Profilul
« Răspunde #33 : Martie 05, 2011, 11:31:05 »

 Nu am nicio idee pentru a rezolva aceasta problema.M-ati putea indruma la vreun tutorial pe topcoder sau asa ceva pentru problema asta...sau sa spuneti macar un pic din ideile voastre multumesc mult.Programarea aia dinamica nu stiu cum as putea sa o implementez. Brick wall Brick wall plz help.

Later edit : Sau daca e alta problema asemanatoare cu "Petrica"  Very Happy

Editat de moderator : Modifica'ti posturile anterioare, nu posta consecutiv pe aceeasi tema.
« Ultima modificare: Martie 06, 2011, 13:58:21 de către Gabriel Bitis » Memorat
darkseeker
De-al casei
***

Karma: 29
Deconectat Deconectat

Mesaje: 106



Vezi Profilul
« Răspunde #34 : Octombrie 29, 2011, 12:25:30 »

populatiile oraselor sunt date in ordine nu ?
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #35 : Octombrie 29, 2011, 12:38:40 »

Cum adica ? Daca te referi la faptul ca a i-a valoarea de pe linia a doua inseamna populatia orasului i, atunci da, ai dreptate Wink.
Memorat
darkseeker
De-al casei
***

Karma: 29
Deconectat Deconectat

Mesaje: 106



Vezi Profilul
« Răspunde #36 : Octombrie 29, 2011, 13:25:12 »

Da , la asta ma refeream ... off Neutral speram sa fie de la asta . Iau wa pe 4 teste x( . Daca poate cineva sa-mi sugereze un test mai .. "special" as fi recunoscator ... Deci am tot incercat sa vad ce ar fi gresit in algoritmul meu si nu inteleg . Fac o parcurgere df si numerotez nodurile in ordinea in care au fost atinse in parcurgere . Sortez nodurile dupa aceasta valoare si elimin orikre pereche de 3 muchii de tip i - tata[ i ] , j-tata[j] , k-tata[k] astfel inkt dfn[ i ] < dfn[j] < dfn[k] . Am pus aceasta conditie pentru a calcula mai usor suma costurilor nodurilor din fiecare district , deoarece daca aveam 2 noduri pe acelasi lant si eliminam prima data nodul de pe un nivel mai jos atunci cand eliminam un nod de deasupra lui ar fi trebuit sa scad si valoarea nodului eliminat anterior . Oricum am facut calculul si metoda mea elimina oricare pereche de 3 muchii din arbore . Astept orice idee ...
« Ultima modificare: Octombrie 29, 2011, 20:47:50 de către Boaca Cosmin » Memorat
vendetta
De-al casei
***

Karma: 72
Deconectat Deconectat

Mesaje: 122



Vezi Profilul
« Răspunde #37 : Iulie 01, 2012, 15:07:50 »

Iau doar 10 puncte. Am facut asa : retin in S[nod] numarul de oameni din subarborele cu radacina in nod ; apoi iau fiecare triplet de forma(i,j,k) cu 1<i<n-1, i<j<n, k<j<=n. Mai am doi vectori in care am First[nod], Last[nod]; Prima aparite a nodului respectiv ultima din parcurgerea DFS; verific daca exista subarbori inclusi in alti subarbori din cele 4 valori(1, i, j, k); asta o fac astfel : subarborele i e inclus in subarborele j daca prima aparatie a lui j e mai mica ca a lui i si ultima a lui j e mai mare ca alui i
Cod:
(First[j] < First[i] && Last[j] > Last[i]) atunci scad din S[j] S[i] .
Si retin minimul(Max-Min) de la toate tripletele. Ma poate ajuta cineva?
L.E. : Am uitat sa folosesc tag-ul code si parantezele drepte le-a interpretat gresit.
L.E. : Mi-a iesit de 100. Am uitat sa tratez cazul cand am de ex. : tripletul(i,j,k) iar j si k sunt subarbori ai lui i iar j e subarbore a lui k sau k e subarbore a lui j; netratand acest caz scadeam o valoare de 2 ori.
« Ultima modificare: Iulie 01, 2012, 23:08:14 de către Salajan Razvan » Memorat
stardust
Strain
*

Karma: 13
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #38 : Iulie 01, 2012, 17:37:20 »

Ideea e buna. Nu inteleg insa cum verifici daca un subarbore nu apartine altuia. Ai scris execrabil, nu se intelege mai nimic. Explica putin mai detaliat partea asta cu verificarea. Si vezi ca se scrie "iau", fara cratima.


LE : Imi pare rau. Nu pot sa te ajut pentru ca nu imi dau seama daca e bine cum faci tu. Dar pot sa iti spun cum am facut eu. Am facut o parcurgere bfs iar apoi mi-am calculat o matrice a[ i ][ j ] care imi spunea daca nodul j se afla in subarborele cu radacina i. Am calculat-o in O(n logn).
« Ultima modificare: Iulie 01, 2012, 21:51:12 de către stardust » Memorat
dutzul
De-al casei
***

Karma: 42
Deconectat Deconectat

Mesaje: 119



Vezi Profilul
« Răspunde #39 : Iulie 22, 2012, 21:08:50 »

pf si eu fac la fel ca salajan razvan si primesc la fel WA si tle pe ultimele teste doar testul 1 il iau nustiu ce are miar putea da cineva un test mai solid dar care sal pot verifica
mersi
Memorat
stardust
Strain
*

Karma: 13
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #40 : Iulie 22, 2012, 21:18:31 »

Vezi sa nu scazi aceasi chestie de doua ori sau ceva de genu si fa forurile alea asa

Cod:
for(int i=1;i<=n-2;i++)
   for(int j=i+1;j<=n-1;j++)
     for(int k=j+1;k<=n;k++)
Memorat
dutzul
De-al casei
***

Karma: 42
Deconectat Deconectat

Mesaje: 119



Vezi Profilul
« Răspunde #41 : Iulie 22, 2012, 21:23:10 »

hmm am pus conditie sa fie i!=j&&j!=k si am mai pus conditia sa fie pe nivele crescatoare (asa reduc numarul de cazuri care le am cand fac diferentele )
Memorat
ctlin04
Nu mai tace
*****

Karma: 23
Deconectat Deconectat

Mesaje: 207



Vezi Profilul
« Răspunde #42 : August 09, 2012, 15:01:47 »

Cei care au avut wa pe testul 3 si l-au trecut pina la urma, va rog un hint ca nu ma prind nicidecum ce caz poate sa fie asa special  Brick wall
Memorat
stardust
Strain
*

Karma: 13
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #43 : August 09, 2012, 15:59:44 »

Eu tin minte ca il picam deoarece cand scadeam din suma totala pe s[k] nu verificam daca nodul k se afla in subarborele lui j(adica deja il scazusem) sau ceva de genul. La o conditie din asta cred ca gresesti. Vezi sa nu scazi de doua ori aceasi chestie alt caz particular nu e.
Memorat
Patrik
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #44 : Aprilie 07, 2013, 15:09:34 »

De ce nu se mai pot trimite solutii?
Memorat
SebiSebi
Nu mai tace
*****

Karma: 76
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #45 : Aprilie 07, 2013, 15:11:25 »

S-a intamplat ceva cu arhiva de probleme. O sa se remedieze in curand.
Memorat
ionut98
Strain
*

Karma: 2
Deconectat Deconectat

Mesaje: 44



Vezi Profilul
« Răspunde #46 : Martie 03, 2016, 10:32:19 »

Iau WA pe 7 teste imi poate da cineva un test mai special nu-mi dau seama ce gresesc

1)calculez un vector de tati si folosesc vector din stl pentru fii pe care ii retin ca o lista de adiacenta si mai am un vector in care retin pe pozitia i suma numarului locuitorilor din fiecare oras plecand din orasul i in fii pana ce ajung in toare frunzele
2)calculez o valoare mediana pentru un subarbore(suma tuturor nodurilor/4)
3)caut cea mai apropiata valoare de ceea ce caut eu(retin nodul care indeplineste acest lucru), dupa care golesc nodul respectiv si toti fii la care pot ajunge pornind din acesta si fac update pe tati pana ce ajung la nodul fara alt tata(repet acest lucru de 3 ori
4)la final caut valoare maxima ramasa in arbore
5)am 4 valori nr1,nr2,nr3,nr4 care reprezinta populatia totala a fiecarui subarbore
6)fac fiecare diferenta posibila cu modul si afisez maximul

Sau daca e gresita abordarea mea imi puteti spune unde gresesc?
Memorat
mihai.alpha
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 16



Vezi Profilul
« Răspunde #47 : Februarie 10, 2017, 12:47:15 »

Tot iau 60p cu 4 WA. Am facut cu LCA, in rest aceeasi idee ca cea a lui filipb. Aveti vreo sugestie?
LE:
Am luat 100p. Am pus unsigned int peste tot si a mers Shocked.
« Ultima modificare: Februarie 10, 2017, 16:04:24 de către mihai craciun » Memorat
AlexTudor
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #48 : Decembrie 17, 2018, 11:57:29 »

 Whistle Whistle Whistle Whistle Evil or Very Mad Evil or Very Mad Evil or Very Mad Weightlift Weightlift Weightlift Applause Applause Cool peacefingers Read This! Rolling on the Floor Laughing Rolling on the Floor Laughing Winner 1st place Winner 1st place Winner 2nd place Rolling Eyes d'oh! Har har Winner 1st place Aha Applause Confused
Memorat
Pagini: 1 [2]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines