•filipb
|
 |
« Răspunde #50 : Martie 07, 2006, 20:24:11 » |
|
Uite functiile de update si query: int query(int x) { int r = 0; for (; x; x -= x ^ (x-1) & x) r += A[x]; return r; } void update(int x, int v) { for (; x <= n; x += x^(x-1) & x) A[x] += v; } Si cand citesti operatiile din fisier, pur si simplu apelezi functiile. Iar ca sa determini suma pe secventa <i,j> faci query(j)-query(i-1). Si nu mai postati  surse Spatiu irosit de aiurea pe forum. Si eventual sterge-l tu cu butonul edit!!! Edited by svalentin: tagul e "code", nu "quote" pentru formatare corecta 
|
|
|
Memorat
|
|
|
|
•devilkind
|
 |
« Răspunde #51 : Martie 08, 2006, 14:44:09 » |
|
Filip, cum explici faptul ca folosind functiile pe care u le-ai scris mai sus obtin TLE la toate testele?
|
|
|
Memorat
|
|
|
|
u-92
Vizitator
|
 |
« Răspunde #52 : Martie 08, 2006, 15:27:43 » |
|
in ce lucrezi ? daca in pascal nustiu ce sa zic, dar eu am trimis mai`nainte surse cu extensia .c si .cpp si intra in timp
|
|
|
Memorat
|
|
|
|
•devilkind
|
 |
« Răspunde #53 : Martie 08, 2006, 18:40:28 » |
|
c++, shi am trimis mai devreme o sursa folosind aceste 2 functii shi nu mi-a intrat in timp. Dak vrei iti trimit un pm cu sursa sa vezi daca e bine ce am facut. [Later edit] am luat 100 intre timp, eu citeam cu streamuri. mersi u-92. Pacat ca mi-am dat seama asha tarziu, mi-am batut capul o gramada incercand tot felul de optimizari, cand nu trebuia decat sa schimb functia de citire. 
|
|
|
Memorat
|
|
|
|
•devilkind
|
 |
« Răspunde #54 : Martie 10, 2006, 16:01:39 » |
|
tibilets vezi sa foloseshti fscanf si fprintf, dak foloseshti streamuri nu o sa iti intre in timp orice optimizari ai face u, asha am patit shi eu. Dak nici asha nu iti merge trimite-mi sursa pe privat, nu o mai posta pe forum ptr ca poate fi o gresheala minora pe care uni sa o vada shi sa dea copy paste.
|
|
|
Memorat
|
|
|
|
nivan
Vizitator
|
 |
« Răspunde #55 : Septembrie 28, 2006, 18:18:59 » |
|
Fac cu arbori indexati binar si folosesc scanf() printf() cu freopen(). Am optimizat cat am putut... totusi scot doar 80 puncte (TLE pe testul 4).  Singura optimizare pe care nu am facut-o e ca folosesc functii pentru Add, Sub si GetSum (adica sa introduc un element, sa scad valoarea unui element si sa gasesc suma pe intervalul <in,sf> )  . Folosesc functii si pentru a obtine cate zerouri are la sfarsit un numar in binar. Totusi nu cred ca influenteaza faza cu functiile.............
|
|
|
Memorat
|
|
|
|
u-92
Vizitator
|
 |
« Răspunde #56 : Septembrie 28, 2006, 18:35:20 » |
|
de ce nu afli numarul de zero-uri terminale in timp constant?
|
|
|
Memorat
|
|
|
|
nivan
Vizitator
|
 |
« Răspunde #57 : Septembrie 28, 2006, 18:36:08 » |
|
nu prea inteleg la ce te referi.... 
|
|
|
Memorat
|
|
|
|
u-92
Vizitator
|
 |
« Răspunde #58 : Septembrie 28, 2006, 18:39:57 » |
|
uita-te la postul de mai sus al lui filipb, la functiile alea.. "x+=x^(x-1)&x" sare direct la numarul care trebuie
|
|
|
Memorat
|
|
|
|
nivan
Vizitator
|
 |
« Răspunde #59 : Septembrie 28, 2006, 18:41:10 » |
|
ms...  pe viitor voi citi si mai sus pe forum  [Last Edit] Si eu parcurgeam ca prostu' prin ele......
|
|
« Ultima modificare: Septembrie 28, 2006, 18:44:51 de către nivan »
|
Memorat
|
|
|
|
•pocaitu
|
 |
« Răspunde #60 : Octombrie 19, 2006, 17:55:47 » |
|
Iau WA pe toate testele cu toate ca mie imi merge bine . Am auzit ca daca vrei sa citesti cu scanf() un numar long int nu faci scanf("%ld",&x); ca in linux nu merge . E adevarat ?
|
|
|
Memorat
|
This is not a signature ! I repeat, this is not a signature !
|
|
|
u-92
Vizitator
|
 |
« Răspunde #61 : Octombrie 19, 2006, 19:34:44 » |
|
poti face un program la a+b sa testezi legat de WA, ai generat teste aleator si programul tau da acelasi raspuns cu brute-force`ul?
|
|
|
Memorat
|
|
|
|
ditzone
Vizitator
|
 |
« Răspunde #62 : Octombrie 20, 2006, 11:58:20 » |
|
Tipul de date e long long. Citirea si afisarea se aface cu %lld
|
|
|
Memorat
|
|
|
|
•pocaitu
|
 |
« Răspunde #63 : Octombrie 20, 2006, 20:47:51 » |
|
Gata , am luat 100 legat de WA, ai generat teste aleator si programul tau da acelasi raspuns cu brute-force`ul? Da, numai ca testele le faceam eu Ar trebui specificat de long long in restrictiile problemei
|
|
|
Memorat
|
This is not a signature ! I repeat, this is not a signature !
|
|
|
•cos_min
|
 |
« Răspunde #64 : Octombrie 27, 2006, 18:59:02 » |
|
chiar nu inteleg de ce iau WA pe toate testele. Fac cu arbori de intervale, folosesc long long . Toate testele care le dau imi ies.  poate sa ma ajute cineva? [ii trimit sursa mea eventual ?]
|
|
« Ultima modificare: Octombrie 27, 2006, 20:58:46 de către cos_min »
|
Memorat
|
vid...
|
|
|
•cos_min
|
 |
« Răspunde #65 : Octombrie 28, 2006, 16:41:49 » |
|
 in sfarsit 100. multumesc celor care m-au ajutat. [greseala era ca declar prea mica dimensiunea arborelui  ]
|
|
|
Memorat
|
vid...
|
|
|
•gabitzish1
|
 |
« Răspunde #66 : Martie 27, 2007, 19:47:50 » |
|
iau 212ms si 216 ms  .. cred k renunt la ea
|
|
|
Memorat
|
|
|
|
•marcelcodrea
|
 |
« Răspunde #67 : Martie 27, 2007, 20:12:30 » |
|
Probabil ca ai timpi de 212 si 216 ms pt ca evaluatorul intrerupe rularea programului dupa expirarea timpului limita , deci nu e relevant ! 
|
|
|
Memorat
|
Imperiile coloniale au murit... Germania Nazistä a murit... Uniunea Sovieticä a murit... Si nici Uniunea Europeanä nu se simte prea bine
|
|
|
•cos_min
|
 |
« Răspunde #68 : Martie 27, 2007, 20:41:10 » |
|
Daca faci cu arbori de intervale renunta  incearca AIB intra lejer in timp 
|
|
|
Memorat
|
vid...
|
|
|
•gabitzish1
|
 |
« Răspunde #69 : Martie 28, 2007, 08:09:16 » |
|
sunt doar clasa a 10'a.. si inca nu am invatzat chestii d'astea ca si "arbori indexati binari".. o alta solutie mai accesibila exista? 
|
|
|
Memorat
|
|
|
|
•devilkind
|
 |
« Răspunde #70 : Martie 28, 2007, 08:18:40 » |
|
nu prea, dar daca ai sa citesti un articol despre arbori indexati binari (google it) cu siguranta vei intelege.
|
|
|
Memorat
|
|
|
|
•sima_cotizo
|
 |
« Răspunde #71 : Martie 28, 2007, 20:30:49 » |
|
Nu e greu chiar daca esti a zecea... Si daca vrei sa treci peste exprimarea "pretentioasa" de aib, incearca sa vezi de fapt ce ar trebui sa aplici aici... si ai sa vezi ca nu e mare lucru... Poate nu m-am exprimat eu cum trebuie, dar ideea ar fi sa nu te sperii de un nume de algoritm care pare mai ciudat...
|
|
|
Memorat
|
|
|
|
•vanila0406
De-al casei
 
Karma: -174
Deconectat
Mesaje: 107
Be wise,be smart,be like me!
|
 |
« Răspunde #72 : Martie 28, 2007, 23:37:10 » |
|
e un articol in ginfo foarte bun despre arborii indexati binar...asta e linku: http://www.ginfo.ro/revista/13_1/focus.pdf sper sa fie de folos 
|
|
|
Memorat
|
Only one thing I know:Death is the best way to a better life.
|
|
|
•Darth_Niculus
|
 |
« Răspunde #73 : Iulie 02, 2007, 20:09:41 » |
|
Deci problema asta ma scoate din sarite de ceva timp..... cand o rezolv cu AIB iau 100 pct.......... cand incerc cu arbori de intervale iau 0 pct..... cu TLE pe toate testele..... pai ambele surse au aceeasi complexitate adica O(MlogN). Chiar ar trebui sa fie un pic mai rapid cu arbori de intervale.... pt ca nu tre sa interoghez de 2 ori arborele ca sa aflu care e suma in Query.....
|
|
|
Memorat
|
|
|
|
•astronomy
|
 |
« Răspunde #74 : Iulie 02, 2007, 22:04:23 » |
|
Din contra, un aib merge mai bine decat un arbore de intervale  [dar la problema asta merge de 100 si cu arbori de intervale]
|
|
|
Memorat
|
|
|
|
|