•domino
|
 |
« : Martie 02, 2006, 01:19:56 » |
|
Aici puteţi discuta despre problema Mult.
|
|
|
Memorat
|
|
|
|
•sims_gl
Client obisnuit

Karma: 35
Deconectat
Mesaje: 53
|
 |
« Răspunde #1 : Martie 03, 2006, 10:00:07 » |
|
Pentru exemplul: 2 7 7 7 raspunsul ar trebui sa fie 3 nu? Adica cele doua moduri de a obtine 7 se numara separat nu?
|
|
|
Memorat
|
"I want to know god's thoughts... the rest are details." Einstein
|
|
|
ditzone
Vizitator
|
 |
« Răspunde #2 : Martie 03, 2006, 12:33:14 » |
|
Da raspunsul e 3... Zice clar in enunt Aflati numarul de posibilitati de a obtine un multiplu a lui K din numarul initial daca singura operatie permisa este stergerea unei cifre pentru ca cei doi copii sa se impace.
|
|
|
Memorat
|
|
|
|
•cyron
Strain
Karma: 2
Deconectat
Mesaje: 43
|
 |
« Răspunde #3 : Martie 05, 2006, 11:48:38 » |
|
cam ce complexitate ar trebui ? 
|
|
|
Memorat
|
|
|
|
u-92
Vizitator
|
 |
« Răspunde #4 : Martie 05, 2006, 13:49:36 » |
|
am scos N*K*c ... c o constanta suficient de mica sa intre in timp 
|
|
|
Memorat
|
|
|
|
•pauldb
|
 |
« Răspunde #5 : Iunie 10, 2006, 14:35:55 » |
|
Constanta aia c vine de la numere mari nu?  Cum ai redus-o? Eu folosesc baza 10^9 si iau doar 30 de puncte... 
|
|
|
Memorat
|
Am zis 
|
|
|
•filipb
|
 |
« Răspunde #6 : Iunie 10, 2006, 15:09:16 » |
|
Nu e constanta de vina, eu am baza 10^8 si mi-a intrat destul de lejer. Ai grija la complexitatea dinamicii, toata faza e sa faci dinamica inainte si nu inapoi.
|
|
|
Memorat
|
|
|
|
•crawler
|
 |
« Răspunde #7 : Iunie 15, 2007, 20:44:26 » |
|
enuntul are o mica greseala  ... nici o cifran din el ...
|
|
|
Memorat
|
|
|
|
•DITzoneC
|
 |
« Răspunde #8 : Iunie 16, 2007, 22:48:44 » |
|
S-a corectat.
|
|
|
Memorat
|
|
|
|
•CezarMocan
|
 |
« Răspunde #9 : Ianuarie 17, 2008, 11:59:31 » |
|
Imi dati si mie ceva idei de optimizare? Fac cu dinamica, in complexitate N*K, pastrez doar ultimele 2 linii ale matricii, la numerele mari folosesc baza 10^8, fac cu scaderi in loc de modulo si iau doar 75 de puncte... 
|
|
|
Memorat
|
|
|
|
•wefgef
|
 |
« Răspunde #10 : Ianuarie 17, 2008, 12:20:39 » |
|
1. Lucreaza cu baza 10^9 2. Tu la fiecare pas initializezi x cu 0, iar la sfarsit ai y := x. Lucreaza cu o matrice de 2 * Kmax * BigInt, ca sa eviti copierea asta. 3. Declara matricile cu dimensiuni puteri ale lui 2. 4. Nu mai scrie in Pascal. Chiar, de ce nu ai trecut dupa JBOI pe C++?
|
|
« Ultima modificare: Ianuarie 17, 2008, 12:23:25 de către Andrei Grigorean »
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•CezarMocan
|
 |
« Răspunde #11 : Ianuarie 17, 2008, 13:00:08 » |
|
Pai unele le scriu in C... depinde de dispozitie...uneori scriu in C, alteori in Pascal... asta am scris-o in Pascal ca in C nu am implementate operatii pe numere mari cu baza mare  . Tot nu reusesc sa iau 100, doar 85. Cu ce ma ajuta daca declar la matrici puteri ale lui 2??
|
|
|
Memorat
|
|
|
|
•gogu
Client obisnuit

Karma: 42
Deconectat
Mesaje: 98
|
 |
« Răspunde #12 : Ianuarie 17, 2008, 14:12:34 » |
|
Cum ai facut initial ar fi trebuit sa merga de 100 de puncte lejer. Trebuie sa te uiti si la warning-uri:  "user.fpc(15,9) Warning: Mixing signed expressions and longwords gives a 64bit result" Atunci cand amesteci intregi cu semn si intregi fara semn ai nevoie de intregi cu semn pe 64 de biti ca sa retii rezultatul, daca iti poate da overflow, si cateodata compilatorul iti face asta automat. Incearca sa lucrezi numai cu longword si cred ca nu ar trebui sa ai problema asta.
|
|
|
Memorat
|
|
|
|
•wefgef
|
 |
« Răspunde #13 : Ianuarie 17, 2008, 14:22:50 » |
|
Invata STL. O sa te ajute mult.
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•CezarMocan
|
 |
« Răspunde #14 : Ianuarie 17, 2008, 18:25:20 » |
|
Multumesc mult Gogu si Wefgef... am reusit sa iau 100 
|
|
|
Memorat
|
|
|
|
•wefgef
|
 |
« Răspunde #15 : Ianuarie 17, 2008, 18:33:32 » |
|
Cu ce ma ajuta daca declar la matrici puteri ale lui 2??
Pai sa zicem ca tu vrei sa accesezi A[ i ][ j ]. Matricele se aloca liniar, deci elementul care te intereseaza este de fapt al (i-1)*M+j-lea de la adresa de unde s-a alocat A[0][0] - primul element. Daca M este putere de 2, atunci operatia (i-1)*M este de fapt o shiftare si ia semnificativ mai putin timp de calculat. S-ar putea sa mai fie o explicatie legata de cum foloseste un calculator memorie.. nu stiu  . Vezi ca uneori daca declari prea multa memorie, iti merge mai incet programul. Se pare ca asa e in cazul de fata  . L. E.: Mai Cezarel, cum te chinuiai tu degeaba. Pai de ce scoti tu operatia mod, daca o lasi pe aia de div? Ca sunt la fel de proaste. Am scos instructiunea din procedura aduna si uite ce timpi am obtinut: http://infoarena.ro/job_detail/123929. Rapid nu? (si e sursa ta  )
|
|
« Ultima modificare: Ianuarie 17, 2008, 19:04:20 de către Andrei Grigorean »
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•blue_phoenix
Client obisnuit

Karma: 0
Deconectat
Mesaje: 57
|
 |
« Răspunde #16 : Decembrie 16, 2011, 08:54:38 » |
|
nu cred ca am inteles bine cerinta "singura operatie permisa este stergerea unei cifre pentru ca cei doi copii sa se impace." de fapt, din exemplu, pot sa sterg oricate, si din subsirul care ramane scris, fac un numar. daca e div cu k, il numar. eu am facut cu dinamica, asa: (dp[ i ][j]=numarul de numere care restul j la impertirea cu k, considerand doar primele i cifre=> raspunsul va fi, la final, in dp[n][0]) //initializarea/ v[] e sirul initial de cifre... for(i=1;i<=n;i++)dp[i][v[i]%k]=1;//cifra asta pot sa iau si singura, neimperecheata cu nimic din fata
for(i=1;i<n;i++){ for(j=0;j<k;j++){ dp[i+1][j]+=dp [ i ] [j]; dp[i+1][(j*10+v[i+1])%k]+=dp [ i ] [j];//daca consider a (i+1)-a cifra } }
dar iau doar 10 puncte cu incorect pe restul cerinta s-a schimbat semnficativ in ultimul timp? va ca se vorbeste de numere mari; in plus, sunt multe surse de 100p care au un timp de aproape 2secunde
|
|
« Ultima modificare: Decembrie 16, 2011, 09:46:55 de către FMI - Paul-Dan Baltescu »
|
Memorat
|
|
|
|
•pauldb
|
 |
« Răspunde #17 : Decembrie 16, 2011, 09:46:02 » |
|
Problema e ca rezultatul poate sa fie pana la 2 N si trebuie folosite " numere mari" in dinamica.
|
|
|
Memorat
|
Am zis 
|
|
|
•blue_phoenix
Client obisnuit

Karma: 0
Deconectat
Mesaje: 57
|
 |
« Răspunde #18 : Decembrie 16, 2011, 10:03:46 » |
|
a da, asa e. de data asta nu cere rezultatul modulo ceva, ci chiar numarul. multumesc!
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
 |
« Răspunde #19 : Decembrie 16, 2011, 16:18:24 » |
|
Va puteti uita sa vedeti daca e buna limita de timp ? [PS] : Si daca e buna, am 95 puncte, si nu stiu ce sa mai optimizez, am facut dinamica cu baza 109, dar tot nu iasa...
|
|
|
Memorat
|
|
|
|
•vendetta
|
 |
« Răspunde #20 : Septembrie 04, 2012, 21:15:55 » |
|
Salut! Am o complexitate de N*K*Const (const fiind de la numerele mari) dar iau maxim 90 de puncte! Ultima sursa de 100 de puncte a fost la inceputul anului. De vina e : evaluatorul sau implementarea mea ?
|
|
« Ultima modificare: Septembrie 04, 2012, 21:21:22 de către Salajan Razvan »
|
Memorat
|
|
|
|
•Schumi
Client obisnuit

Karma: 36
Deconectat
Mesaje: 74
|
 |
« Răspunde #21 : Septembrie 05, 2012, 12:11:26 » |
|
Si eu iau maxim 95 cu TLE pe testul 10. Din cate vad, din februarie nu a mai luat nimeni 100. Cred ca trebuie marita limita putin.
|
|
|
Memorat
|
|
|
|
•freak93
|
 |
« Răspunde #22 : Septembrie 05, 2012, 12:34:40 » |
|
Fixed 
|
|
|
Memorat
|
|
|
|
•freak93
|
 |
« Răspunde #23 : Noiembrie 09, 2013, 22:16:07 » |
|
Am vazut ca limita de timp era un pic prea stransa. A fost marita la 0.8.
|
|
|
Memorat
|
|
|
|
|