Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 387 Distincte  (Citit de 2413 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« : Martie 25, 2007, 13:27:08 »

Aici puteţi discuta despre problema Distincte.
Memorat
Dorin
Client obisnuit
**

Karma: 7
Deconectat Deconectat

Mesaje: 73



Vezi Profilul
« Răspunde #1 : Aprilie 11, 2008, 18:49:39 »

Am citit solutia la problema, si nu prea reusesc sa imi dau seama cum se poate face suma elementelor dintr-un dreptunghi in timp logaritmic Think ? Imi puteti da vreo idee va rog ?

[...] De fapt nu imi dadeam seama cum pot sa calculez suma valorilor atribuite fiecarui punct  Embarassed ... In range query 2D trebuie sa afli doar numarul lor ... dar cred ca m-am prins ... tks
« Ultima modificare: Aprilie 11, 2008, 22:19:21 de către Oltean Dorin » Memorat

Smile ! Smile ... tomorow will be worse
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #2 : Aprilie 11, 2008, 22:07:04 »

Solutia de 100 de puncte foloseste un simplu arbore de intervale sau un arbore indexat binar. Daca vrei sa afli mai multe despre range query 2D poti consulta articolul de aici.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
Dorin
Client obisnuit
**

Karma: 7
Deconectat Deconectat

Mesaje: 73



Vezi Profilul
« Răspunde #3 : Aprilie 12, 2008, 12:40:11 »

Am 2 rezolvari cu acelasi rationament una implementata cu arbori de intervale, si una cu arbori indexati binar si la niciuna nu iau mai mult de 25 de P (Wrong Answer).
Rationamentul meu este urmatorul :
Cu un arbore determin suma primelor i numere. Cu un altul determin suma primelor x numere care au cel mai apropiat element egal cu el din partea stanga pe o pozitie mai mica sau egala cu x ( in cazul in care nu exista un astfel de element am pozitia 0 ) ;
Ordonez query-urile dupa capatul dreapta;
Cod:
for(i = n; i; i--)  
{
     cat timp am capat dreapta egal cu i
     {
           calculez suma elementelor care au cel mai apropiat element, din partea stanga egal cu el, pe o pozitie mai mica sau egala cu capatul stanga din care scad suma elementelor pana la capatul stanga
     }
     elimin din al 2lea arbore valoarea reprezentanta pentru pozitia i
}

Banuiesc ca rationamentul meu este gresit, dar nu reusesc sa imi dau seama care parte sad ?
Daca aveti careva vreo idee ... help please
Memorat

Smile ! Smile ... tomorow will be worse
gabitzish1
Moderatori infoarena
Nu mai tace
*****

Karma: 321
Deconectat Deconectat

Mesaje: 926



Vezi Profilul
« Răspunde #4 : Decembrie 29, 2008, 18:09:13 »

Nu reusesc sa trec de 35.. iau doar primele 7 teste + WA. Am vazut ca au fost mai multi in situatia asta. Cum ati trecut peste treaba asta?
Memorat
reking
Strain
*

Karma: 3
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #5 : Iunie 27, 2013, 17:42:48 »

Cod:
int calculeaza (int x,int y)
{
    int i,sum=0;
    bool h[NMax]={0};
    for (i=x;i<=y;i++)
    {
        if (h[v[i]]) i++;
        else
        {
            sum=sum+v[i];
            h[v[i]]=1;
        }
    }
    return sum;
}

Ce este gresit la acest subprogram care calculeaza suma elementelor distincte intre pozitiile x si y ([x;y]) Huh
in v[] retin elementele vectorului si h[] e un fel de vector caracteristic (am incercat sa fac un fel de hash...nu prea ma pricep) Very Happy
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #6 : Iunie 27, 2013, 17:51:32 »

Invata sa faci debug Smile.
Memorat
SebiSebi
Nu mai tace
*****

Karma: 76
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #7 : Iunie 27, 2013, 17:53:30 »

Sari peste niste elemente datorita conditiilor. Pune
Cod:
if(h[v[i]]==0) 
       sum=sum+v[i];
h[v[i]]=1;      
Oricum problema se rezolva folosind arbori de intervale.

Si apoi ar trebui sa faci ce spune Mihai.
Memorat
reking
Strain
*

Karma: 3
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #8 : Iunie 27, 2013, 18:15:58 »

Mersi. ^_^
Mi-a mers...ce-i drept mi-a mers doar pe cateva teste, pe restul TML...momentan o las asa pentru ca nu stiu 'arbori de intervale' .
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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