infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Adrian Diaconu din Aprilie 24, 2007, 07:42:16



Titlul: 410 Castel
Scris de: Adrian Diaconu din Aprilie 24, 2007, 07:42:16
Aici puteţi discuta despre problema Castel (http://infoarena.ro/problema/castel).


Titlul: Răspuns: 410 Castel
Scris de: Dinu Radu din Mai 31, 2013, 19:03:54
La aceasta problema , ca si pe .campion , rezolvarea care conform solutiei ar trebui sa ia  50p ia lejer 100p (24 ms pe testul maxim).


Titlul: Răspuns: 410 Castel
Scris de: Trifon Titus din Martie 25, 2014, 09:30:43
ceva hint pentru solutia de 50?...am luat 30 pe bruteforce


Titlul: Răspuns: 410 Castel
Scris de: Dima Eustatiu din Martie 25, 2014, 15:13:00
Iti faci o coada alocata dinamic pentru fiecare cheie in care memorezi camerele care se pot deschide cu acea cheie iar cand faci rost de cheie parcurgi coada si aplici fill pentru coordonatele respective . Toate astea trebuie facute in fill .


Titlul: Răspuns: 410 Castel
Scris de: Trifon Titus din Martie 26, 2014, 08:40:21
pe varianta asta imi tot da incorect...nu stiu ce am gresit, uite parcurgerea
 while(ok==0)
    {
        ok=1;
        for(i=1; i<=nchei; ++i)
        {
            while(!c[chei].empty())
            {
                ok=0;
                a=c[chei].front();
                ++nchei;
                chei[nchei]=a;
                for(kap=0; kap<=3; ++kap)
                {
                    if(  (a+k[kap])>0  &&  (a+k[kap])<=n*m  &&  ((a+k[kap])%m!=1||kap!=3)  &&  ((a+k[kap])%m!=0||kap!=1) && (trec[a+k[kap]]!=1) )
                    {
                        c[x[a+k[kap]]].push(a+k[kap]);
                        trec[a+k[kap]]=1;
                    }
                }
                c[chei].pop();
            }
        }
    }