Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 945 Tabara2  (Citit de 2867 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
raduzer
Client obisnuit
**

Karma: 62
Deconectat Deconectat

Mesaje: 71



Vezi Profilul
« : Noiembrie 15, 2009, 15:14:39 »

Aici puteti discuta despre problema Tabara2.
Memorat
jupanubv92
Client obisnuit
**

Karma: 19
Deconectat Deconectat

Mesaje: 74



Vezi Profilul
« Răspunde #1 : Noiembrie 16, 2009, 08:02:51 »

Cand o sa putem vedea si noi solutia oficiala la problema asta?
Memorat
raduzer
Client obisnuit
**

Karma: 62
Deconectat Deconectat

Mesaje: 71



Vezi Profilul
« Răspunde #2 : Noiembrie 16, 2009, 10:16:13 »

Cel tarziu maine.  Smile

[LE]: Am adaugat si solutia la problema asta. Poti accesa pagina apasand aici.
« Ultima modificare: Noiembrie 16, 2009, 10:42:10 de către Radu Zernoveanu » Memorat
jupanubv92
Client obisnuit
**

Karma: 19
Deconectat Deconectat

Mesaje: 74



Vezi Profilul
« Răspunde #3 : Noiembrie 16, 2009, 13:19:27 »

Mersi fain pentru solutie .  Applause
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #4 : Noiembrie 16, 2009, 20:05:13 »

Am o nelămurire de care m-am lovit și în timpul concursului, și nu m-am prins nici din articol. La oprațiile de tip 2 updatez în arborele de intervale cu maximu poziției respective până în acel moment. Dar cum fac să updatez când se schimbă maximul sarcinilor pe care le pot face dintr-o poziție în urma update-ului de tip 1. Cum este în exemplu, cum voi updata că plecând din 2, pot face o sarcină cu valoare 4, întrucât în momentul în care am updatat în arbore valoarea pentru poziția 2, maximul era 3.
Memorat
alexei
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #5 : Noiembrie 16, 2009, 20:57:58 »

Foarte faina problema!  Very Happy

@Mishu91:
"# Se garanteaza ca o sarcina poate fi indeplinita numai dintr-o locatie (direct sau indirect)."  Smile
Memorat
raduzer
Client obisnuit
**

Karma: 62
Deconectat Deconectat

Mesaje: 71



Vezi Profilul
« Răspunde #6 : Noiembrie 17, 2009, 10:48:55 »

Atunci cand ai un update de tipul 1, gasesti radacinile multimilor din care fac parte nodurile i si j si tragi muchie intre ele astfel incat una din ele va deveni radacina noii multimi formate. Tot timpul tii in radacina maximul din multime. Daca aceasta radacina este o locatie (un nod din cele N), atunci faci update pe arborele de intervale. Datorita precizarii "Se garanteaza ca o sarcina poate fi indeplinita numai dintr-o locatie (direct sau indirect).", esti sigur ca maxim 1 din radacinile multimilor din care fac parte i si j (initial) va fi o locatie.
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #7 : Noiembrie 17, 2009, 14:24:24 »

Merge scazuta limita la 0.2 secunde. Intra lejer.  Ok
Memorat
stocarul
Nu mai tace
*****

Karma: 49
Deconectat Deconectat

Mesaje: 203



Vezi Profilul
« Răspunde #8 : Noiembrie 20, 2009, 18:07:33 »

Am făcut și eu o soluție la problema asta, însă nu îmi intră în timp pe testul 8.
Am trimis o sursă fără efectuarea apelurilor pe arborele de intervale, și tot nu se incadrează în timp. Deci, înseamnă că problema este la mulțimile disjuncte. Am folosit optimizările de la mulțimi disjuncte din arhiva educatională. Voi ați mai folosit și alte optimizări?
Mulțam.
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #9 : Noiembrie 21, 2009, 10:00:41 »

Mi-e mi-a intrat lejer in timp cu cele doua euristici din educationala [ compresia si faza cu inaltimile ]. O optimizare minora ar fi ca la instructiunea U 1 sa nu mai faci joinul daca i si j se afla deja in aceeasi componenta. De asemenea, updateul pe arborele de intervale (in cazul U 2) nu are rost sa-l mai faci daca P[ i ] ( punctajul maxim obtinut daca pleci din locatia i) este mai mare decat S [ find(j) ] ( punctajul maxim obtinut din componenta lui j ).

Cod:
if(instr == 1)
        {
               // unesc componenta lui i cu comp lui j
               tmpi = find(i), tmpj = find(j);
               if(tmpi != tmpj)
                     join(tmpi, tmpj);
        }
else
            {
               L[j] = i; // sarcina j se executa la locatia i
                if (P[i] < S[tmpi = find(j)])
                {
                    P[i] = S[tmpi];
                    update(1,1,N,i,P[i]);
                }
            }
« Ultima modificare: Noiembrie 21, 2009, 11:15:21 de către Marcu Florian » Memorat
raduzer
Client obisnuit
**

Karma: 62
Deconectat Deconectat

Mesaje: 71



Vezi Profilul
« Răspunde #10 : Noiembrie 28, 2009, 17:09:22 »

@stocarul: M-am uitat putin pe sursa ta si am impresia ca nu memoizezi pe update la multimi... Incearca sa memoizezi ca sigur de aici iei TLE. wink
« Ultima modificare: Noiembrie 28, 2009, 17:22:58 de către Radu Zernoveanu » Memorat
pepsiM4A1
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 15



Vezi Profilul
« Răspunde #11 : Iulie 28, 2017, 14:46:09 »

Ca sa nu va chinuiti ca mine, pentru cei ce citesc 2 caractere(caracterul de newline apoi inca un caracter pentru a obtine tipul de operatie), nu faceti asta. Banuiesc ca nu toate liniile se termina cu '\n'.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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