Pagini: 1 [2]   În jos
  Imprimă  
Ajutor Subiect: 495 Numere 6  (Citit de 11273 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
dornescuvlad
Nu mai tace
*****

Karma: -138
Deconectat Deconectat

Mesaje: 234



Vezi Profilul
« Răspunde #25 : Aprilie 20, 2010, 15:23:35 »

si eu fac in O(Nr_div(b) * a * 10) si iau doar 80 ?
nu se poate mari timpul de executie ?
Memorat
new_programmer
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 22



Vezi Profilul
« Răspunde #26 : Iunie 24, 2010, 16:08:56 »

O idee cum as putea rezolva problema asta prin backtracking?
Memorat
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #27 : Iulie 10, 2010, 20:39:29 »

ideea e ca produsul il poti obtine destul de repede din cifre > 1 (de ex 1024 = 10 de 2)
generezi prin back siruri de cifre > 1 astfel incat sa obtii produsul dorit si celelalte cifre pui 1.
Trebuie sa mai vezi in cate moduri poti aranja ca sa obtii un numar.
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #28 : Iulie 10, 2010, 21:30:54 »

Nu asa se face problema. Asta mie mi se pare un fel de ciucuiala, desi probabil complexitatea worst-case e buna.
Incearca sa pleci de la dinamica clasica a[ i ][ j ] - numarul de numere de i cifre care dau restul j la impartirea cu B. Asta are complexitate O(A * B) si ar trebui sa o optimizezi.
Hint: memoria folosita e O(log A * B)
« Ultima modificare: Iulie 11, 2010, 06:37:44 de către Andrei Grigorean » Memorat
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #29 : Iulie 11, 2010, 14:04:06 »

da, evident ca solutia optima e O(B log A) dar in solutiile oficiale de la OJI existau 2 solutii:
una in O(a * sqrt b) si una cu backtracking... baiatul a intrebat cum se face prin backtracking...
Memorat
new_programmer
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 22



Vezi Profilul
« Răspunde #30 : Iulie 13, 2010, 14:12:12 »

Intai, multumesc de raspunsuri.
@Savin Tiberiu
Nu imi dau seama care valoare din matricea aceea e rezultatul. a[A][0] nu e acela deoarece acest rezultat ia in cont si numerele cu produsul cifrelor g*B, unde g e numar natural.
Memorat
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #31 : Iulie 13, 2010, 14:21:02 »

E gresita relatia data de devilkind. (acum am vazut si eu)
Cel mai probabil a vrut sa zica asa:

dp[ i ][ j ] = numarul de numere de i cifre cu produsul cifrelor j

raspunsul e in dp[ A ][ B ]. complexitatea O(A * B) daca se implementeaza direct.

De aici se poate optimiza obtinandu-se O(A * sqrt B) sau optim O(B logA)
 
« Ultima modificare: Iulie 13, 2010, 14:29:13 de către Mircea Dima » Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #32 : Iulie 13, 2010, 15:08:09 »

Ah da scz. Nu am citit atent enuntul. Am avut impresia ca trebuie ca produsul sa divida numarul b, nu sa fie egal.
Memorat
new_programmer
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 22



Vezi Profilul
« Răspunde #33 : Iulie 15, 2010, 13:44:56 »

Iau 90 de puncte, din cauza TLEului de la testul 9.Nu imi dau seama cum as putea scoate O(B logA).Nu vad cum as putea folosi cautarea binara aici si vazand complexitatea aia nu imi vine nimic altceva in cap.Un hint? wink
Memorat
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #34 : Iulie 15, 2010, 18:31:24 »

Un numar de i cifre (i = par) poate fi obtinut concatenand 2 numere de i/2 cifre. Iar unul de i cifre (i = impar)
poate fi obtinut dintr-un numar de i-1 cifre adaugand o cifra. (nu are legatura cu cautarea binara)
Memorat
FlorinHaja
Strain
*

Karma: -8
Deconectat Deconectat

Mesaje: 29



Vezi Profilul
« Răspunde #35 : Octombrie 06, 2016, 08:25:30 »

Ma puteti ajuta, va rog, cu niste idei? Am optimizat la maxim problema, luand prima data nr. de solutii pe puterile lui 2, apoi calculand in functie de bitii lui n. De asemenea, aloc memorie doar pt. randurile de matrice de care am nevoie. Nu scot mai mult de 90 de puncte  Angry
http://www.infoarena.ro/job_detail/1771869
Memorat
Bodo171
Client obisnuit
**

Karma: 11
Deconectat Deconectat

Mesaje: 52



Vezi Profilul
« Răspunde #36 : Octombrie 06, 2016, 19:34:51 »

Ma puteti ajuta, va rog, cu niste idei? Am optimizat la maxim problema, luand prima data nr. de solutii pe puterile lui 2, apoi calculand in functie de bitii lui n. De asemenea, aloc memorie doar pt. randurile de matrice de care am nevoie. Nu scot mai mult de 90 de puncte  Angry
http://www.infoarena.ro/job_detail/1771869
Ai putea incerca sa nu scrii using namespace std si sa folosesti citirea din C.Eu asa am reusit sa  intru in memorie la alta problema la care nu reuseam cu streamuri din cauza ca avea o limita mica la care se simtea schimbarea.
Memorat
FlorinHaja
Strain
*

Karma: -8
Deconectat Deconectat

Mesaje: 29



Vezi Profilul
« Răspunde #37 : Octombrie 06, 2016, 19:41:24 »

Ai putea incerca sa nu scrii using namespace std si sa folosesti citirea din C.Eu asa am reusit sa  intru in memorie la alta problema la care nu reuseam cu streamuri din cauza ca avea o limita mica la care se simtea schimbarea.
Mersi mult! Esti genial!  Yahoo! Am luat suta  Winner 1st place
Dovada: http://www.infoarena.ro/job_detail/1772551
Memorat
krityx
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #38 : Octombrie 11, 2016, 10:52:05 »

Eu incerc sa fac un backtracking, si iau WA pe 3 teste.

Practic generez toate combinatiile de cifre care au produsul ala si apoi calculez nr de scrieri ale unui numar de a cifre cu fiecare combinatie.
Sa zicem ca am gasit o combinatie din n cifre care nu-s neaparat distincte.

Calculez Sol = Combinari(a, n) * n! (adica Aranjamente(a, n)) = nr de posibilitati de a scrie un nr de a cifre cu n cifre > 1 distincte.

Apoi pentru fiecare cifra Ai, 1 < i < 10 impart Sol prin fact(Ai), unde Ai e frecventa cifrei i.

E ceva gresit in rationamentul asta ?

Edit:
Problema era de la impartirea modulo ceva. Luam 90p facand (A/B) mod p. Cam mult pentru noroc chior. Cu invers modular am luat 100.
« Ultima modificare: Octombrie 20, 2016, 14:48:51 de către Adrian Buzea » Memorat
Marius7122
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #39 : Decembrie 07, 2016, 21:59:38 »

Iau WA pe toate testele, cu toate ca algoritmul meu a mers pentru toate testele pe care l-am incercat(si cele din kitul oji). Mai are cineva problema asta?
Memorat
Pagini: 1 [2]   În sus
  Imprimă  
 
Schimbă forumul:  

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