infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Adrian Diaconu din August 13, 2007, 22:56:51



Titlul: 492 Sudest
Scris de: Adrian Diaconu din August 13, 2007, 22:56:51
Aici puteţi discuta despre problema Sudest (http://infoarena.ro/problema/sudest).


Titlul: Răspuns: 492 Sudest
Scris de: Dumitran Adrian Marius din August 15, 2007, 12:11:19
sal
evaloatorul verifica ca solutia e optima sau doar compara fisierele?
enunt:Daca sunt mai multe trasee pe care se obtine o cantitate maxima de cartofi recoltata se va afisa unul dintre acestea.

multumesc anticipat


Titlul: Răspuns: 492 Sudest
Scris de: Paul-Dan Baltescu din August 17, 2007, 21:07:39
Am scris doua solutii bazate pe idei relativ diferite la problema asta si cu amandoua iau WA doar pe testul 9. In plus, imi merg toate testele de la OJI. Am vazut ca a luat ceva lume 100. Nu prea inteleg ce gresesc... ma poate ajuta cineva?


Titlul: Răspuns: 492 Sudest
Scris de: Gabriel Bitis din August 17, 2007, 21:51:25
toate testele problemei sunt de la OJI.. inseamna ca nu iti merg toate, respectiv testul 9.


Titlul: Răspuns: 492 Sudest
Scris de: Savin Tiberiu din August 18, 2007, 11:50:37
Ptr Dumitran Adrian Marius: Am vazut ca si tu ai luat la un moment dat 80, picai testele 7 si 9. Cum le-ai rezolvat? PS: problema asta nu are evaluator desi ar trebui sa aiba


Titlul: Răspuns: 492 Sudest
Scris de: Marius Stroe din August 20, 2007, 09:24:31
toate testele problemei sunt de la OJI.. inseamna ca nu iti merg toate, respectiv testul 9.

Eu nu sunt de aceeasi parere cu tine. Pentru toate testele de la OJI obtinut acelasi rezultat cu solutia oficiala. Deci, de ce iau doar 80 pe site ?

Am ajuns la concluzia ca rezultatul final e gresit. Dar la OJI am luat 100 ...


Titlul: Răspuns: 492 Sudest
Scris de: Gabriel Bitis din August 20, 2007, 11:18:13
Eu am adaugat problema in arhiva.. si stiu ce teste am pus...
Se va atasa un eval la problema foarte curand, si vor fi reevaluate solutiile.


Titlul: Răspuns: 492 Sudest
Scris de: Adrian Diaconu din August 20, 2007, 13:34:23
S-a reevaluat.

Atentie mai mare la problemele care necesita eval. :)


Titlul: Răspuns: 492 Sudest
Scris de: Gabriel Bitis din August 20, 2007, 13:40:54
oki... o sa am grija mai mare in viitor.


Titlul: Răspuns: 492 Sudest
Scris de: Bivol Mihai din Octombrie 13, 2007, 17:38:36
pe testele de OJI programu merge bine(compilat cu borlandu, pe model large(ca la OJI)) dar iau sigsegvu pe infoarena.... de ce?


Titlul: Răspuns: 492 Sudest
Scris de: Airinei Adrian din Octombrie 13, 2007, 17:49:17
Compilatorul folosit pe infoarena e total diferit de borland, citeste mai multe aici (http://infoarena.ro/documentatie/evaluator)


Titlul: Răspuns: 492 Sudest
Scris de: Bivol Mihai din Octombrie 13, 2007, 21:47:45
am facut rost de dev-cpp si am gas problema acum a mers, am luat 100\:D/ :yahoo: \:D/


Titlul: Răspuns: 492 Sudest
Scris de: irimias robert din Martie 12, 2009, 17:49:10
testele sunt de la OJI? -- k am verificat pt sursa mea shi miau mers toata acasa shi totusi primesc 0 puncte oare kre ar putea fi explciatia :?

Edit: scz, nu mai conteaza     am gresit numele fisierului de intrare  :aha:  :oops:


Titlul: Răspuns: 492 Sudest
Scris de: Vlad Eugen Dornescu din Noiembrie 20, 2009, 22:13:21
rezolvare cu lee? ideea ? explicati-mi ca unui copil de clasa primara pt ca am iq cam redus in comparatie cu geniile de aici  :weightlift:


Titlul: Răspuns: 492 Sudest
Scris de: Dragos-Alin Rotaru din Noiembrie 20, 2009, 22:36:49
Se face cu programare dinamica . :)


Titlul: Răspuns: 492 Sudest
Scris de: Vlad Eugen Dornescu din Noiembrie 20, 2009, 22:45:11
Se face cu programare dinamica . :)

profu meu zice ca se face cu lee foarte usor... si mai multi mi-au zis.
imi explicati va rog ideea?


Titlul: Răspuns: 492 Sudest
Scris de: Dragos din Decembrie 02, 2009, 07:28:00
Se face cu programare dinamica . :)

profu meu zice ca se face cu lee foarte usor... si mai multi mi-au zis.
imi explicati va rog ideea?
pai lee-ul e algoritm de programare dinamica


Titlul: Răspuns: 492 Sudest
Scris de: George Popoiu din Decembrie 02, 2009, 19:51:05
iau 50 pct din cauza ca iau memory limit exceeded.

Folosesc doua matrici de dim (N^2)*K,si pe unele teste depasesc mult de tot limita. Folosesc matricea cu urmatoarea semnificatie :

Cost[k][i ][j]=costul maxim obtinut la a k-a comanda (s/e) la care se ajunge pe elementul (i,j)

Si cealalta matrice e pt reconstituirea drumului.

Nu imi dau seama cum sa optimizez memoria la judecata pe care am folosito. Complexitatea e O(K*(N^2)) si intra in timp.

Ar trebui sa fac altfel? Hints plz, ma chinui de ceva vreme. :'(


Titlul: Răspuns: 492 Sudest
Scris de: Florian Marcu din Decembrie 03, 2009, 13:49:58
Incearca sa renunti la o dimensiune a vectorului Cost[][][]. Gandeste-te ca daca esti la pasul curent P, nu te intereseaza decat starea din pasul anterior (P-1). [ nu te intereseaza ce aveai la pasul P-2, P-3, etc. ]


Titlul: Răspuns: 492 Sudest
Scris de: aladin aladinn din Ianuarie 05, 2010, 23:00:08
Am o problema destul de ciudata..... :sad: . Folosesc pentru afisarea drumului doua deque care atunci cand rulez programul in minGW dau raspunsul din .ok iar la evaluatorul de la oji .exe-ul meu imi afiseaza alte valori.....si obtin 85 pct. Pe site obtin 90 cu un traseu gresit :-k . Poate cineva sa imi explice de ce se intampla acest lucru? Ati mai intalnit asemenea erori folosind deque?


Titlul: Răspuns: 492 Sudest
Scris de: Vlad Tarniceru din Septembrie 05, 2010, 19:32:58
am o intrebare: este posibil ca la sfarsit sa ramana pozitii in vector "neutilizate"?

de exemplu testul

3
1 2 3
4 5 6
7 8 8
5
2 2 1 1 1

este posibil?

sau la testul

4
1   2   3  1
4   5   6  1
7   8   9  1
1 100  1  1
4
3 1 2 1
exista raspuns, iar in cazul in care ar exista  este:
115
1 1
4 1
4 2
4 4
?

multumesc  :D


Titlul: Răspuns: 492 Sudest
Scris de: Vlad Eugen Dornescu din Septembrie 05, 2010, 21:03:30
Robotul trebuie sa se orienteze dupa toate cele K comenzi.
Fisierul de iesire trebuie sa contina exact K + 2 linii (una pentru valoarea maxima, si K + 1 pentru drum).  :)


Titlul: Răspuns: 492 Sudest
Scris de: Vlad Tarniceru din Septembrie 05, 2010, 21:29:10
multumesc vlad :D . am modifica sursa si ... 10 puncte ???

am dat teste pana acum si toate au iesit bune ...
eu rezolv cu algoritmul lui lee, sper ca e buna si metoda aceasta, dar cine poate va rog sa-mi dea niste teste cu cazuri particulare sau cam asa ceva ...

multumesc :)


Titlul: Răspuns: 492 Sudest
Scris de: Simoiu Robert din Septembrie 06, 2010, 14:17:05
Merge cu algoritmul lui Lee foarte usor, doar trebuie sa fiti atenti  :thumbup: .


Titlul: Răspuns: 492 Sudest
Scris de: Vlad Tarniceru din Septembrie 06, 2010, 15:18:11
multumesc, am reusit sa fac de 100, trebuia schimbata doar conditia unde maream pasii :)


Titlul: Răspuns: 492 Sudest
Scris de: Usurelu Catalin din Martie 16, 2011, 15:02:16
Nu sunt sigur dar cred ca exista un caz pe care problema nu il trateaza si care ar face sa nu mai poata fi rezolvata cu dinamica, solutia official devenind ... gresita .
E posibil sa ajunga in aceeasi casuta cu o cantitate maxima din doua directii dar din una dintre directii cu mai putine comenzi efectuate astfel incat in final cea cu mai putine comenzi sa obtina o cantitate mai mare.
Ori in rezolvarea acceptata oficial in cazul in care am ajuns cu o anumita suma, aceea va ramane la fel chiar daca am ajuns cu 100 comenzi acolo, iar din alta directie am ajuns cu 20 de comenzi (caz in care e posibil sa avem un rezultat mai bun).
Mentionez din nou ca nu sunt sigur, dar mie asa mi se pare.


Titlul: Răspuns: 492 Sudest
Scris de: Lepadat Mihai-Alexandru din Martie 16, 2011, 17:53:28
Nu poti ajunge la aceleasi coordonate cu un numar diferit de comenzi.


Titlul: Răspuns: 492 Sudest
Scris de: Domnita Dan din Februarie 10, 2012, 14:20:19
As dorii si eu niste teste ca de la atasamente nu am cum sa le iau
Multumesc anticipat  :peacefingers:


Titlul: Răspuns: 492 Sudest
Scris de: Cezar Mocan din Februarie 10, 2012, 15:58:33
Problema a fost propusa la OJI 2006. Daca vrei testele oficiale, poti sa intri pe http://olimpiada.info/oji2006, la sectiunea Subiecte, si sa le descarci de acolo.


Titlul: Răspuns: 492 Sudest
Scris de: Domnita Dan din Februarie 18, 2012, 16:06:41
MI se pare mie sau testele sunt gresite  :-' ?
uite un .in  :readthis: :
__________________________________
16
6 1 0 2 8 2 10 7 4 1 2 3 7 10 7 5
4 5 5 3 6 2 6 2 10 1 0 2 7 3 5 1
3 8 2 0 5 9 3 3 7 1 9 0 6 0 9 3
7 7 9 7 6 9 4 10 5 4 2 10 9 8 6 0
6 4 1 9 7 6 10 2 0 0 0 7 3 5 2 4
3 2 10 7 8 10 7 8 5 0 2 6 6 3 9 0
7 1 3 6 5 0 0 6 8 5 10 0 10 1 7 6
6 6 3 10 4 10 2 10 1 8 9 6 10 4 10 7
4 2 8 10 5 1 7 5 5 8 2 9 6 5 8 5
4 4 5 0 9 4 7 6 8 10 4 1 6 9 5 7
2 1 1 9 7 4 7 7 7 8 2 1 4 3 1 6
4 5 1 7 1 6 5 10 8 7 5 8 2 0 7 3
5 6 3 3 4 6 5 10 1 2 6 6 1 10 7 3
9 10 7 7 4 10 10 6 8 7 6 8 6 7 7 0
9 5 2 5 3 1 5 7 9 6 7 6 7 1 7 6
6 10 8 10 6 9 9 4 4 5 2 0 10 1 2 7
14
5 2 2 1 2 2 1 1 1 2 3 1 5 2
________________________________

Si uite un .out  :readthis: :
________________________________
-23
105
1 1
6 1
6 3
6 5
6 6
8 6
8 8
9 8
10 8
10 9
12 9
15 9
16 9
16 14
16 16
________________________________

Daca aduni valori pozitive cum sa iti dea suma o valoare negativa ?  :annoyed:
Pe asta chiar nu o inteleg !!

Astept o explicatie de la cineva mai luminat ca mine  :peacefingers: de ce ii asa !!

Ms anticipat!


Titlul: Răspuns: 492 Sudest
Scris de: robertgbr din Februarie 21, 2012, 10:10:41
9/10 Erori de signal 11.
Imi puteti spune si mie va rog care poate sa fie motivul?
Test Timp executie Memorie folosita Mesaj Punctaj/test
1 0ms 356kb Killed by signal 11(SIGSEGV). 0
2 0ms 360kb Killed by signal 11(SIGSEGV). 0
3 0ms 364kb Killed by signal 11(SIGSEGV). 0
4 0ms 368kb Killed by signal 11(SIGSEGV). 0
5 0ms 372kb Killed by signal 11(SIGSEGV). 0
6 4ms 380kb Killed by signal 11(SIGSEGV). 0
7 4ms 392kb Killed by signal 11(SIGSEGV). 0
8 4ms 396kb Killed by signal 11(SIGSEGV). 0
9 4ms 384kb Killed by signal 11(SIGSEGV). 0
10 0ms 396kb OKAY! 10


Titlul: Răspuns: 492 Sudest
Scris de: Domnita Dan din Februarie 21, 2012, 18:20:26
SIGSEGV mie imi aparea cand imi iesea din ceva vactori sau nu imi citea ceva si atunci mergea asa aiurea pana se hotara sa imi dea eroarea; am observat ca poate fi din cauza unei citiri din fisier.

Incearca sa maresti vectori si / sau tablourile (matricile) si daca nu merge nici asa verifica citirile din fisier daca doresti dami PM si iti voi da niste teste ofisiale de la OJI pe aceasta problema ca sa poti verifica citirea  :oops: .


Titlul: Răspuns: 492 Sudest
Scris de: Marian Iacob din Decembrie 20, 2012, 17:57:12
Imi explica si mie cineva ce nu-i in regula cu sursa mea...iau doar ultimul test.. :'(
Multumesc!!!


Titlul: Răspuns: 492 Sudest
Scris de: Cazacu Robert din Februarie 05, 2013, 22:51:12
Ma chinui de ceva timp si nu inteleg de ce aceasta sursa imi da Memory limit exceeded pe testele 2,3,4.
Am calculat memoria toatala folosita si imi da undeva pe la aprox 110kb ( am luat in considerare si fisierele ).
Singura functie de care nu am tinut cont prea mult ar fi cea recursiva de afisare a coordonatelor dar din cate m-am uitat eu nu ar trebui sa ajunga la un numar atat de mare de copii incat sa depaseasca 640kb. De asemenea pe primul test imi zice ca folosesc 260kb memorie care iarasi nu prea inteleg de unde vine.

Cod:
#include<stdio.h>
int n,m[102][102],k,v[205];
int cpy[102][102];
FILE *g=fopen("sudest.out","w");
struct coord
{
    unsigned char x,y;
} stack[205],omg[102][102];
void PrintStupidCoords(int a,int b)
{
    if(!(a==1 && b==1))
    PrintStupidCoords(omg[a][b].x,omg[a][b].y);
        fprintf(g,"%d %d\n",a,b);
}
void RobysDinamics()
{
    int crt=0,ssize=1,vcrt=1,aux;
    stack[crt].x=stack[crt].y=1;
    m[1][1]=cpy[1][1];
    while((k-vcrt)>-1)
    {
        aux=ssize;
        for(int i=crt;i<aux;i++)
        {
            if( stack[i].x+v[vcrt]<=n && (m[stack[i].x][stack[i].y]+cpy[stack[i].x+v[vcrt]][stack[i].y])>=m[stack[i].x+v[vcrt]][stack[i].y])
            {
                m[stack[i].x+v[vcrt]][stack[i].y]=m[stack[i].x][stack[i].y]+cpy[stack[i].x+v[vcrt]][stack[i].y];
                stack[ssize].x=stack[i].x+v[vcrt];
                stack[ssize].y=stack[i].y;
                omg[stack[i].x+v[vcrt]][stack[i].y].x=stack[i].x;
                omg[stack[i].x+v[vcrt]][stack[i].y].y=stack[i].y;
                ssize++;
            }
            if( stack[i].y+v[vcrt]<=n && (m[stack[i].x][stack[i].y]+cpy[stack[i].x][stack[i].y+v[vcrt]])>=m[stack[i].x][stack[i].y+v[vcrt]])
            {
                m[stack[i].x][stack[i].y+v[vcrt]]=cpy[stack[i].x][stack[i].y+v[vcrt]]+m[stack[i].x][stack[i].y];
                stack[ssize].x=stack[i].x;
                stack[ssize].y=stack[i].y+v[vcrt];
                omg[stack[i].x][stack[i].y+v[vcrt]].x=stack[i].x;
                omg[stack[i].x][stack[i].y+v[vcrt]].y=stack[i].y;
                ssize++;
            }
        }
        crt+=aux-crt;;
      vcrt++;
    }
 
}
int main()
{
    FILE *f=fopen("sudest.in","r");
 
    fscanf(f,"%d",&n);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            fscanf(f,"%d",&cpy[i][j]);
    fscanf(f,"%d",&k);
    for(int i=1;i<=n;i++)
        fscanf(f,"%d",&v[i]);
    RobysDinamics();
    fprintf(g,"%d\n",m[n][n]);
    PrintStupidCoords(n,n);
}


Titlul: Răspuns: 492 Sudest
Scris de: Petenchea Alexandru din Februarie 06, 2013, 13:01:34
La prima vedere tind sa cred ca te folosesti de stack la parcurgerea in latime.  :-' Acolo bagi punctele pe care ai ajuns si dupa aceea te extinzi de la ele mai departe. Vad ca folosesti si un v pe acolo... in principiu sursa e brainfuck :P . Iti zic cum am facut eu si poate asa stii daca ai gresit undeva :
Deci am facut ceva asemanator cu parcurgerea in latime, doar ca mergi numai in sud / est . Am pastrat punctele (coord) intr-o coada de dimensiune 101 * 101 * 2 . Cand reconstituiam drumul era mult mai simplu, ma duceam direct nord-vest pornind de la destinatie. Dinamica o stii tu mai departe :) . Nu am vazut nimic declarat atat in sursa ta, deci poate aici e greseala. Asta s-ar putea sa fie cauza la SIGSEGV. La MLE s-ar putea sa fie din cauza ca nu se opreste recursiva (a si b sa nu mai ajunga 1) .
Vreo 240 kb vin din cauza bibliotecii <cstdio> , nu au legatura cu sursa ta.

P.S. Cred ca ar trebui sa fie si testele de la OJI pe net. Vezi pe care iti pica.