Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 659 Cuvinte2  (Citit de 3094 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« : Februarie 20, 2008, 20:48:11 »

Aici puteţi discuta despre problema Cuvinte2.
Memorat
ciprianf
De-al casei
***

Karma: 11
Deconectat Deconectat

Mesaje: 104



Vezi Profilul
« Răspunde #1 : Iulie 16, 2008, 11:04:07 »

Vreo sugestie cum sa scap de TLE? Iau 85 de pcte
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #2 : Iulie 16, 2008, 16:19:25 »

Ca sa iei 100 trebuie sunt suficiente urmatoarele modificari:
1. #define N 1024 pe a doua linie (e bine ca atunci cand ai matrice dimensiunile (mai putin prima - nu conteaza) sa fie puteri ale lui 2)
2. Atat in functia combin(), cat si in main ai doi de %MOD in aceeasi intructiune. Lasa-l doar pe ultimul, e suficient. Operatiile modulo sunt foarte costisitoare.
3. Peste tot unde ai (j+k) % d, inlocuieste cu f(j+k) unde f are urmtoarea definitie:
Cod:
inline int f(int a) { return a >= d ? a-d : a; }

Am ramas si eu surprins cand am vazut ca facand aceste mici modificari timpul de rulare devine de 3 ori mai mic Wink
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
ciprianf
De-al casei
***

Karma: 11
Deconectat Deconectat

Mesaje: 104



Vezi Profilul
« Răspunde #3 : Iulie 16, 2008, 18:04:27 »

 Shocked am luat 100. ms mult wefgef. Tradu-mi si mie mai exact ce face functia f. Din cate inteleg eu e asa:
Cod:
 if(a>=d) return a-d; else return a; 
. Nu cred ca e corect, deoarece pt un exemplu banal nu e echivalent cu modul. ( 7 %3=1 ; f(7)=4 dupa mine) . De cate ori e mai rapida o fctie daca pui inline decat daca nu pui?
Memorat
stef2n
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« Răspunde #4 : Iulie 16, 2008, 18:39:15 »

Impartirea modulara e echivalenta cu scaderea repetata pana ajungi la o valoare intre 0 si MOD - 1. Functia f e folosita cand ai 2 numere deja cuprinse intre 0 si MOD - 1 a caror suma vrei sa o afli. Ideea e ca e necesara maxim o scadere a lui MOD din suma, intrucat aceasta e cuprinsa intre 0 si 2 * MOD - 2
Memorat

Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #5 : Iulie 16, 2008, 21:33:05 »

Shocked am luat 100. ms mult wefgef. Tradu-mi si mie mai exact ce face functia f. Din cate inteleg eu e asa:
Cod:
 if(a>=d) return a-d; else return a; 
. Nu cred ca e corect, deoarece pt un exemplu banal nu e echivalent cu modul. ( 7 %3=1 ; f(7)=4 dupa mine) . De cate ori e mai rapida o fctie daca pui inline decat daca nu pui?

Exact ce ai presupus tu face functia f. Explicatia de ce merge a dat-o stef2n mai sus Smile.

Functiile inline sunt folosite pentru a mari viteza de rulare atunci cand codul functiei este scurt (functioneaza oarecum ca un #define, doar ca au caractersiticile unei functii obisnuite).
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
bent_larsen
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 18



Vezi Profilul
« Răspunde #6 : Martie 16, 2010, 23:38:37 »

Un hint pt 100 de puncte?
Memorat
dornescuvlad
Nu mai tace
*****

Karma: -138
Deconectat Deconectat

Mesaje: 234



Vezi Profilul
« Răspunde #7 : Ianuarie 19, 2011, 22:10:41 »

Dp[ i ][ j ] - nr.cerute de lungime i, a.i sa dea restul j la impartirea cu D.
Ar merge o dinamica sub forma asta? Smile
Am implementat dar iau 1 OK, 2 TLE si restul WA.Nu e corecta gandirea?
« Ultima modificare: Ianuarie 20, 2011, 22:36:21 de către Vlad Eugen Dornescu » Memorat
dornescuvlad
Nu mai tace
*****

Karma: -138
Deconectat Deconectat

Mesaje: 234



Vezi Profilul
« Răspunde #8 : Ianuarie 20, 2011, 22:38:31 »

Complexitatea mea pentru problema aceasta e O(logN * D ^ 2).Se poate mai bine?
Am dp[ i ][ j ] %= mod; care imi mareste timpul de executie..nu vad cum as putea optimiza.. (iau 85 puncte)
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #9 : Ianuarie 21, 2011, 12:07:45 »

Incearca sa-l inlocuiesti cu for ( ; dp[ i ][ j ] >= MOD ; dp[ i ][ j ] -= MOD ) ; Face minuni.
Memorat
dornescuvlad
Nu mai tace
*****

Karma: -138
Deconectat Deconectat

Mesaje: 234



Vezi Profilul
« Răspunde #10 : Ianuarie 21, 2011, 16:03:07 »

Editat de moderator:
@ Robert : se pare ca in cazul lui Vlad nu face minuni!
@ Vlad : pastreaza-ti calmul!
Pe viitor daca aveti ceva de impartit (neintelegeri, insulte si alte chestii d'astea), faceti'o in particular, nu in topicul unei probleme
« Ultima modificare: Ianuarie 21, 2011, 17:50:14 de către Gabriel Bitis » Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #11 : Octombrie 04, 2011, 17:32:47 »

DE asemenea, nici aici nu e buna limita, prea mica...
Memorat
freak93
Echipa infoarena
Nu mai tace
*****

Karma: 342
Deconectat Deconectat

Mesaje: 819



Vezi Profilul
« Răspunde #12 : Octombrie 04, 2011, 20:46:46 »

Iei la fel, cred ca ar trebui sa fie ok.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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