infoarena

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



Titlul: 498 Scara 3
Scris de: Adrian Diaconu din August 13, 2007, 22:58:21
Aici puteţi discuta despre problema Scara 3 (http://infoarena.ro/problema/scara3).


Titlul: Răspuns: 498 Scara 3
Scris de: Dumitran Adrian Marius din August 15, 2007, 17:31:05
o mica problema pe care am avut-o si poate va fi de folos altora:
cele n trepte sunt numerotate de la 0 la n-1 nu de la 1 la n
 :fighting:


Titlul: Răspuns: 498 Scara 3
Scris de: Paul-Dan Baltescu din August 15, 2007, 18:24:52
Nu e adevarat. Cele N trepte sunt numerotate de la 1 la N. Poate ca te refereai la faptul ca pleci din afara scarii. Asta e altceva.


Titlul: Răspuns: 498 Scara 3
Scris de: Sebastian Crisan din Octombrie 14, 2007, 11:39:18
Dintr-o sticla cu apa se poate bea orice cantitate k <= x, si apoi se pot urca k trepte cu un singur pas?


Titlul: Răspuns: 498 Scara 3
Scris de: Bondane Cosmin din Octombrie 14, 2007, 12:34:17
Dintr-o sticla cu apa se poate bea orice cantitate k <= x, si apoi se pot urca k trepte cu un singur pas?


Da.


Titlul: Răspuns: 498 Scara 3
Scris de: Mari n din Ianuarie 31, 2008, 19:13:53
Eu lucrez cu 2 vectori in care retin: v[ i ] - nr minim de pasi de a fi ajuns la treapta i si p[ i ] - pretul minim de a fi ajuns la treapta i in v[ i ] pasi.
Parcurg i de la 1 la n si de pe scara i analizez cele 3 cazuri de a actualiza v si p pentru scarile de dupa i (beau apa, beau energizanta, urc normal). cand v[ j ]>v[ i ] (cu j dupa i) actualizez v[ j ]=v[ i ]+1 si p[ j ], iar cand v[ j ]=v[ i ]+1 actualizez p[ j ]. Plec cu v[1]=1 si p[1]=0 si afisez v[n] si p[n].
Unde gresesc ? (iau 35 p, in rest WA)...


Titlul: Răspuns: 498 Scara 3
Scris de: Gabriel Bitis din Ianuarie 31, 2008, 19:18:21
Gresesti la cazul in care bea energizanta... si eu luam 35 din cauza asta. Ai grija cat urci si cat platesti.


Titlul: Răspuns: 498 Scara 3
Scris de: Tabara Mihai din Ianuarie 31, 2008, 19:21:04
Eu lucrez cu 2 vectori in care retin: v - nr minim de pasi de a fi ajuns la treapta i si p - pretul minim de a fi ajuns la treapta i in v pasi.
Parcurg i de la 1 la n si de pe scara i analizez cele 3 cazuri de a actualiza v si p pentru scarile de dupa i (beau apa, beau energizanta, urc normal). cand v[j]>v (cu j dupa i) actualizez v[j]=v+1 si p[j], iar cand v[j]=v+1 actualizez p[j]. Plec cu v[1]=1 si p[1]=0 si afisez v[n] si p[n].
Unde gresesc ? (iau 35 p, in rest WA)...

Si eu luam tot 35 cand in dinamica, la partea du energizant faceam
Cod:
for ( j = 1; j <= suc[i]; ++j )
si actualizam  (i + 2*j ).

Ar trebui sa iti mearga daca faci
Cod:
for ( j = 1; j <= 2*suc[i]; ++j )
si actualizezi i + j.



Titlul: Răspuns: 498 Scara 3
Scris de: Mari n din Ianuarie 31, 2008, 19:55:19
multumesc mult!


Titlul: Răspuns: 498 Scara 3
Scris de: Andrei Misarca din Decembrie 09, 2008, 23:39:08
Am o intrebare... pentru exemplul
Cod:
6
1
1 2
2
4 1
1 2
nu ar putea bea pe prima treapta bautura energizanta, si sa ajunga pe treapta 4, iar apoi sa bea din nou o bautura energizanta si sa ajunga pe treapta 6, din doua sarituri, dar cu costul 1+2 = 3  :?


Titlul: Răspuns: 498 Scara 3
Scris de: Vlad Schnakovszki din Februarie 23, 2009, 10:45:26
Am o intrebare... pentru exemplul
Cod:
6
1
1 2
2
4 1
1 2
nu ar putea bea pe prima treapta bautura energizanta, si sa ajunga pe treapta 4, iar apoi sa bea din nou o bautura energizanta si sa ajunga pe treapta 6, din doua sarituri, dar cu costul 1+2 = 3  :?

Trebuie sa sara 2q trepte daca bea suc, deci doar numere pare. Dar 4-1=3 deci nu se poate.


Titlul: Răspuns: 498 Scara 3
Scris de: Robert Hangu din Martie 12, 2009, 20:13:41
pentru acelasi exemplu, daca bea bautura energizanta pe prima treapta, poate sa mearga 2*2=4 trepte, adica ajunge de pe 1 pe 5, si de acolo mai da un pas fara sa bea nimic si ajunge in 6. adica 2 pasi si 2 lei. de ce nu e corect?


Titlul: Răspuns: 498 Scara 3
Scris de: Andrei Misarca din Martie 12, 2009, 20:54:04
pentru acelasi exemplu, daca bea bautura energizanta pe prima treapta, poate sa mearga 2*2=4 trepte, adica ajunge de pe 1 pe 5, si de acolo mai da un pas fara sa bea nimic si ajunge in 6. adica 2 pasi si 2 lei. de ce nu e corect?
La care se adauga pasul de la 0 la 1. Pentru ca el se afla pe podea (treapta 0) :)


Titlul: Răspuns: 498 Scara 3
Scris de: Robert Hangu din Martie 12, 2009, 20:59:16
o..  :D pardon.. ma gandeam ca incepe din 1


Titlul: Răspuns: 498 Scara 3
Scris de: Ciorbaru Vicentiu Marian din Martie 13, 2009, 21:39:33
Am trimis vre-o 7 surse si punctajul lor mi-a variat de la 35 la 0 si iar la 35. 2 dintre ele le-am rescris de la 0.

Nu inteleg unde gresesc la dinamica. Fac aproximativ acelasi lucru cu 2 vectori v si c, primul tinand numarul de pasi, al doilea costul. Actualizez pe rand in cazul in care o ia inainte fara sa bea nimic, o ia inainte doar cu apa, o ia inainte cu suc. (pt fiecare decilitru in plus consumat)
Afisez intr-un final v[n] si c[n].

pt a nu da toata solutia, scriu doar ce actualizez la vectori in cele 3 cazuri:
sunt conditii pe acolo in caz in care am mai ajuns sa modific o data pozitia respectiva in vector, dar e cam toata solutia.

v[i+1]=v[i ]+1, c[i+1]=c[i ];  //cand nu avem nimic
v[i+j]=v[i ]+1, c[i+j]=c[i ];   //cand avem apa (j decilitri) nu ne costa nimic
v[i+2*j]=v[i ]+1, c[i+2*j]=c[i ]+j;   //cand avem suc (j decilitri) cand bem suc ne costa exact cati decilitri am baut si avansam cu un singur pas 2*j trepte :-?

Daca e prea mult info le sterg insa chiar nu inteleg, am priceput eu gresit problema? Testele mele merg bine.

Edit: Cred ca m-am prins unde greseam la suc, i'll try one more tonight :D


Titlul: Răspuns: 498 Scara 3
Scris de: Cosmin-Mihai Tutunaru din Martie 11, 2010, 18:06:25
Vlad, ai scris că:
Trebuie sa sara 2q trepte daca bea suc, deci doar numere pare. Dar 4-1=3 deci nu se poate.
Dar în enunț scrie:
Citat
Daca bea q (q ≤ y) decilitri dintr-o astfel de sticla, la urmatorul pas G poate urca pana la 2q trepte
Nu zice nicăieri că trebuie să urce un număr par de trepte.
Plus că informația nu ai verificato ... Dacă ai fi trimis o sursă care să urce câte 2q trepte, ai fi văzut că nu obțineai 100 pct.


Titlul: Răspuns: 498 Scara 3
Scris de: Dragos din Iunie 26, 2010, 17:20:02
Sigur este buna limita lui N la problema? Vreau sa spun ca daca declar vectorii a[1205] iau 65 de puncte si daca ii declar a[12000] iau 80 de puncte.
Si nu se poate lua 100 de pucnte cu bellman ford?
La mine depaseste limita de memorie.
Cod:
struct nod{
    short leg;

    short bani;
};
short H[12001];
vector<nod> G[12001];
queue<short> q;
int N,K,d[12001];
int bani[12001];
short isinq[12001],L;


Titlul: Răspuns: 498 Scara 3
Scris de: Andrei Grigorean din Iunie 28, 2010, 09:00:38
Sunt bune testele.


Titlul: Răspuns: 498 Scara 3
Scris de: Vlad Eugen Dornescu din Februarie 11, 2011, 13:49:15
Pentru primul exemplu, de ce nu ar merge asa?
Sare de pe scara 1 pe scara 4 (cu apa de pe scara 1) pas = 2 , cost = 0
Sare de pe scara 4 pe scara 6 (cu energizantul de pe scara 4) pas = 3, cost = 2 / 2 = 1

nrpasi = 3, cost = 1.


Titlul: Răspuns: 498 Scara 3
Scris de: Paul-Dan Baltescu din Februarie 11, 2011, 18:15:34
Din cate inteleg din enunt, daca bei apa de pe scara 1 nu poti urca decat doua trepte, deci ai ajunge pe treapta 3. Vad ca ai luat 100 intre timp, asta era?


Titlul: Răspuns: 498 Scara 3
Scris de: Dragos Oprica din Februarie 11, 2011, 18:17:54
Pai in primul rand incepe de la baza ( cum ar veni - scara 0 ).

Deci de pe 0 pe 1, un pas, cost 0.
Apoi de pe 1 merge pe 5 folosind bautura energizanta, al doieal pas - cost 2.
Iar in final merge de pe 5 pe 6, inca un pas si cost tot 0.

Deci 3 pasi si costul 2.


Titlul: Răspuns: 498 Scara 3
Scris de: Vlad Eugen Dornescu din Februarie 11, 2011, 19:23:41
Mersi.
Eu ma gandeam tot timpul la termenul 'sare' peste x scari in loc sa ma gandesc la 'urca' x scari (sare x - 1 scari intre a si b).
De aceea greseam acolo, ca nu poate ajunge de pe 1 direct pe 4 cum ziceam eu (ar insemna sa sara 2 scari intre ele, dar el nu poate SARI peste 2 scari ca sa ajunga pe 4, ci doar urca 2 scari si sa ajunga pe 3)
I'm such a  ](*,).


Titlul: Răspuns: 498 Scara 3
Scris de: Boaca Cosmin din Martie 05, 2011, 19:32:52
Imi poate spune cineva cat ii da pentru testul :
120 10 2 1 37 1 40 5 60 4 78 19 31 9 12 14 63 1 19 17 76 16 20 92 15 25 7 105 13 102 13 50 10 73 9 61 11 13 7 14 11 53 8 63 6 96 4 20 7 77 3 60 10 69 1 87 5 51 6 42 9 67 5
?


Titlul: Răspuns: 498 Scara 3
Scris de: Lepadat Mihai-Alexandru din Martie 05, 2011, 20:13:56
Imi poate spune cineva cat ii da pentru testul :
120 10 2 1 37 1 40 5 60 4 78 19 31 9 12 14 63 1 19 17 76 16 20 92 15 25 7 105 13 102 13 50 10 73 9 61 11 13 7 14 11 53 8 63 6 96 4 20 7 77 3 60 10 69 1 87 5 51 6 42 9 67 5
?

20 31


Titlul: Răspuns: 498 Scara 3
Scris de: Barbu Dorel din August 28, 2014, 20:17:34
120 10 2 1 37 1 40 5 60 4 78 19 31 9 12 14 63 1 19 17 76 16 20 92 15 25 7 105 13 102 13 50 10 73 9 61 11 13 7 14 11 53 8 63 6 96 4 20 7 77 3 60 10 69 1 87 5 51 6 42 9 67 5

E o chestie ciudata. Sursa mea ia 100 pe Infoarena. Dar testul de mai sus este ultimul test de pe .Campion, la aceeasi problema.  Raspunsul considerat corect de Infoarena este: 20 31. Pe .Campion cel considerat corect este 20 38. Pana la urma cum sta treaba? Implementarea mea aici este o dinamica inainte. Solutia oficiala a problemei presupunea crearea unui graf si aplicarea algoritmului lui Dijkstra pe el, asta ca fapt divers, fiind din punctul meu de vedere irelevant deoarece o implementare corespunzatoare a uneia din cele doua solutii trebuie sa dea rezultatul corect.

Deci, cine greseste, .Campion sau Infoarena? :-?


Titlul: Răspuns: 498 Scara 3
Scris de: Marian Iacob din Februarie 25, 2015, 13:46:18
eu am incercat sa fac problema aceasta cu un Bellman Ford...initial am tras muchii orientate intre toate scarile (i, i + 1, cu 1 <= i < N)...dupa am mai tras muchii din scarile cu apa/energizant de cost 1 si un pret corespunzator...stiu ca folosesc mult memorie, dar problema e ca pe foarte multe teste imi da incorect...daca a folosit cineva aceeasi ideea , dati-mi un hint va rog unde as pute gresi :-s


Titlul: Răspuns: 498 Scara 3
Scris de: Joska Jozsef din Februarie 25, 2015, 16:05:00
Daca cineva poate sa-mi ajuta aici: http://www.infoarena.ro/job_detail/1360537
Primesc numai 85 puncte din cauza timpului :( aici este sursa: http://www.infoarena.ro/job_detail/1360537?action=view-source
Am incercat sa rezolv problema folosind metoda dinamica, iar cred ca am prea multe "for"-uri, si de aceea e prea mult timp pentru compilare. Idee?


Titlul: Răspuns: 498 Scara 3
Scris de: Bejenariu Ionut Daniel din Martie 07, 2016, 14:08:02
Am si eu aceeasi problema iau 85 de puncte cu TLE pe 3 teste imi puteti da un hint cum sa optimizez(am incercat dinamica)

http://www.infoarena.ro/job_detail/1636992?action=view-source