banjalukaforum.com https://banjalukaforum.com/ |
|
Takmičenja za 2008. godinu https://banjalukaforum.com/viewtopic.php?f=18&t=35431 |
Stranica 1 od 9 |
Autoru: | che.guevara [ 17 Jan 2008, 22:40 ] |
Tema posta: | Takmičenja za 2008. godinu |
Zdravo ljudi, evo prođe još jedna godina, pa da nastavim sa tradicijom ![]() Za početak, sve Java programere iz okoline sigurno će zainteresovati Challenge 24 - koliko sam čuo, veoma zanimljivo i nepredvidivo takmičenje. Kvalifikacije se igraju u februaru i biće algoritamskog takmičenja, nalik na ACM. Timove čine tri člana. Timovi koji se kvalifikuju učestvovaće na finalu u Budimpešti gdje se očekuje neko KLANJE jer su zadaci nešto completely different. Prošle godine bila je neka robo-pucačina u kojoj su se programi borili u nekoj areni, a prethodnih godina bilo je i obrade videa i zvuka i koječega - široko znanje se ovdje cijeni ![]() Više informacija: http://www.challenge24.org/2008/ Nagrade postoje, mada je više simboličko. Prava korist je u vježbi, ali i u referenci, ako volite svoj CV ![]() Mnogo zanimljivije za većinu ljudi biće Top Coder Open, gdje je konkurencija 10x jača ali su i nagrade 100x veće. Preko 100 000 programera iz cijelog svijeta takmičiće se i ove godine na TC Open-u u izradi algoritama, komponenti i tzv "marathon" mečevima. Pa, navali narode. Posebno pozivam studente da se pridruže barem na Algorithm takmičenja već danas, na http://topcoder.com/tc , pa, vidimo se u areni ![]() http://www.topcoder.com/tc?module=Stati ... 8&d3=about |
Autoru: | Nemanja666 [ 18 Jan 2008, 03:19 ] |
Tema posta: | |
Mislio sam ja vec otvoriti ovu temu, ali sam ipak cekao tebe. Ja ove godine cu se po zadnji put takmicite u konkurenciji srednjoskolaca pa sam poceo raditi dosta ranije. Nisam bas mnogo ali se radi. Kako se radi kod vas? |
Autoru: | che.guevara [ 18 Jan 2008, 21:46 ] |
Tema posta: | |
Srećno Nemanja, meni je najbolje bilo u četvrtoj godini ![]() BOI je ove godine u Makedoniji, pa ako BiH bude učestvovala, možda se i vidimo tamo ![]() Šta ti je ovo pitanje "kako se radi kod vas", na šta misliš? |
Autoru: | Nemanja666 [ 19 Jan 2008, 01:30 ] |
Tema posta: | |
che.guevara je napisao: Srećno Nemanja, meni je najbolje bilo u četvrtoj godini
![]() BOI je ove godine u Makedoniji, pa ako BiH bude učestvovala, možda se i vidimo tamo ![]() Šta ti je ovo pitanje "kako se radi kod vas", na šta misliš? Mislim na "konkurenciju", kolege, kako se spremaju? |
Autoru: | che.guevara [ 19 Jan 2008, 02:00 ] |
Tema posta: | |
Pa rade ljudi, vježbaju na matematičkoj gimnaziji, studenti, bivši takmičari i profesori spremaju predavanja i zadatke, i za pripreme i za takmičenja. Imaju ovdje neke solidne domaće knjige iz programiranja, ali i ljudi rade ova internet takmičenja masovno. Ima i više gikova, više ljudi koristi linuks i ostala čuda ![]() |
Autoru: | TheDragon [ 22 Jan 2008, 23:12 ] |
Tema posta: | |
Znaci, Nemanja, pucas na visoko ove godine? ![]() Kada si poceo sa pripremama i sta konkretno radis? Ja sam konstantno vjezbao, od kraja proslog BHOI-a... Sada zvanicno u skoli pocinju pripreme. Videcemo sta ce biti, ali nece biti lako. Ostaju nam Ibrahim i Marko jos ovu godinu... Ma, bice dobro samo ako se bude igrao basket 7 dana pred takmicenje, a ne da se vjezba! ![]() ![]() |
Autoru: | che.guevara [ 23 Jan 2008, 00:41 ] |
Tema posta: | |
Biće vam Marko tu i slijedeće godine ![]() |
Autoru: | Nemanja666 [ 23 Jan 2008, 02:16 ] |
Tema posta: | |
BEEP BEEP ![]() PSS. Sorry moderatori (visa klasa) i mi pijemo Edit: che.guevara |
Autoru: | TheDragon [ 23 Jan 2008, 10:09 ] |
Tema posta: | |
Srecko, ja sam se prije nekih pola mjeseca prijavio za Challenge24, samo cekam dvojicu drugova da se nakane i da se registruju. Oni veze nemaju o algoritmima, ali su zato dobri u C# i VB.NET-u, zezaju se sa tim svakodnevno, prave adresare, muzicke plejere i sl. Nemamo nikakve sanse, ali makar da se zezamo... Kazes, bice online takmicenje algoritamske prirode? Fino, fino... Ja nista nisam detaljno procitao, nisam cak ni kreirao tim! Valjda cu uskoro... Ucestvujes li ti? |
Autoru: | TheDragon [ 23 Jan 2008, 10:12 ] |
Tema posta: | |
A da, za TCO... Nisam punoljetan... ![]() |
Autoru: | Digresija [ 23 Jan 2008, 12:14 ] |
Tema posta: | |
@Nemanja666: Promijeni ruku. ![]() @che: Radis li ista za lovu trenutno il' samo dzabalebaris po tim online takmicenjima? |
Autoru: | che.guevara [ 23 Jan 2008, 19:35 ] |
Tema posta: | |
Digresija je napisao: @Nemanja666: Promijeni ruku.
![]() @che: Radis li ista za lovu trenutno il' samo dzabalebaris po tim online takmicenjima? Haha, e Nemanja, ja ne bi dozvolio da me neko ovako zeza ![]() ![]() ![]() Digresija, kako to misliš, džabalebarim? Breeee! Takmičenja su super, to ti je odlična stavka u CV-u, neki ljudi su čak dogurali do MIT-a preko tih takmičenja ![]() ![]() |
Autoru: | Digresija [ 23 Jan 2008, 20:16 ] |
Tema posta: | |
che.guevara je napisao: Trenutno ne smem da ti kažem čime se bavim, možda na pp Trzni na PP. ![]() ![]() |
Autoru: | TheDragon [ 24 Jan 2008, 01:29 ] |
Tema posta: | |
Zadatak za vjezbu: Kod: Dat je niz prirodnih brojeva A duzine N. Treba izvrsiti M operacija koje mogu biti sledecih formi: - I X => promijeni vrijednost I-tog elementa niza A na X - INV => stampati trenutan broj inverzija niza Broj inverzija niza je uredjen broj parova (i,j) za koje vazi da je (i<j) i (A[i]>A[j]). Ogranicenja: 1 <= N <= 250000 1 <= M <= 10^4 1 <= A[i] <= 50000 Primjer: Ulaz: 10 8 2 6 6 4 7 6 3 5 9 1 inv 8 8 inv 5 6 10 5 inv 7 1 inv Izlaz: 21 17 13 14 Najbolju slozenost koju sam uspio da dobijem je priblizno O(M*N). Kako? Da ne trosim vrijeme i prostor na objasnjavanje algoritma, najkrace receno: naredba INV mi ima konstantnu nezavisnu slozenost O(1) a operacija I X ima slozenost O(N), tako da se u najgorem slucaju svaka od M operacija izvrsi u vremenu N, sto daje O(M*N). E sad, posto ne mogu da eliminisem M iz slozenosti, jedino mi je N "usko grlo", pa pretpostavljam da je najbolje sto se moze uraditi O(M*logN) i to vjerovatno sa kumulativnim tabelama, uz male modifikacije. Problem je sto ja ne znam da modifikujem kumulativne tabele iz prostog razloga sto ne razumijem matematicku osnovu po kojoj rade. Ima li neko ideju koja ovo rjesava u O(M*logN) uz pomoc neke druge metode (strukture podataka, grafovi, dinamicko...)? |
Autoru: | Nemanja666 [ 24 Jan 2008, 10:10 ] |
Tema posta: | |
Digresija je napisao: @Nemanja666: Promijeni ruku.
![]() To sto si ti spao da se igras sam sa sobom ne znaci da smo svi spali. |
Autoru: | Nemanja666 [ 24 Jan 2008, 21:27 ] |
Tema posta: | |
Ja danas poceo drzati neku sekciju u skoli i ujedno pisem neki skriptu. Ovo mi je u planu: Sortiranje (Sorting) Elementarne metode Quick Sort Obilježavanje i spajanje Traženje (Searching) Elementarne metode Binarno drveće Hashing Obrada stringova Traženje podstringova Uporedjivanje dijelova Sintačka analiza (Parsing) Alogoritmi iz geometrije Elementarne metode Convex Hull Traženje u opsegu Geometriski presjeci Najbliža tačka Grafovi Elementarne metode Spajanje Grafovi sa težinom Usmjereni grafovi Network Flow Matching Napredno Alogoritamske metode Brze Fourier transformacije Dinamičko programiranje Linearno programiranje Iscrpno traženje NP Problemi |
Autoru: | che.guevara [ 24 Jan 2008, 21:57 ] |
Tema posta: | |
Wow, svaka ti čast ako znaš bar trećinu toga što si nabrojao ![]() Samo guraj! Ja čim završim faks i doktoriram, dolazim tamo u RS da držim dodatnu širom države ![]() |
Autoru: | Nemanja666 [ 24 Jan 2008, 22:47 ] |
Tema posta: | |
Nisam ni rekao da znam, tek radim drugo poglavlje ali mi je to u planu da odradim do drzavnog |
Autoru: | che.guevara [ 24 Jan 2008, 23:26 ] |
Tema posta: | |
Evo vam jedna korisna stvar, skoro mi pokazao drug. Radi se o kumulativnim tabelama, pa pošto me je pitao Dragon znam li nešto o tome, da mu i odgovorim ovdje. Dakle kumulativne tabele su strukture koje vam odgovaraju na pitanje "kolika je suma prvih X elemenata". Dakle ako imate niz od 1000 brojeva, ova struktura može brzo da odgovori na pitanje "suma prvih 100" ili "suma prvih 200" brojeva. Upotreba ove strukture je vrlo korisna, recimo pomoću tako jednostavnog "upita" može se saznati i kolika je suma bilo kojeg intervala, recimo, između A i B, suma iznosi vrijednost u kumulativnoj tabeli za B - vrijednost za A. E sad, kako se ovo implementira, pa, većina ljudi zna jedan način, a to je da se prilikom računanja sume prvih 100 brojeva npr, jednostavno odradi jedna petlja od 1 do 100 i te vrijednosti saberu. Složenost ove operacije je O(n) (linearna). Mnogo bolje bi bilo napraviti niz suma u kojem ćemo čuvati (keširati) sume svih intervala od 0 do i (0<i<N - broj elemenata). Onda kada nam zatreba vrijednost (kumulativna suma) samo pročitamo vrijednost tog niza. Pa šta je problem onda, kod ovog prvog, čitanje je O(n) a kod ovog drugog načina je O(1)? Problem je što kod prvog načina, mijenjanje bilo koje vrijednosti nije problem, jer se kumulativna suma svaki put izračunava ponovo, međutim, kod drugog načina, promjena neke vrijednosti utiče na sve kumulativne sume iznad tog indeksa, što znači da je operacija linearna, O(1). Evo vam kako da dobijete složenost O(logN) za oba slučaja: Ako imamo n elemenata, definišimo N kao n*2, ili ljepše, n << 1. Napravimo niz int kum[N] i inicijalizujemo sve vrijednosti na 0 (u javi je ovo automatsko, u C-u je najbolje koristiti memset funkciju). Potrebne su dvije funkcije, jedna za čitanje, druga za upisivanje. Kod: int get (int i) {
int r = 0; while (i > 0) { r += kum[i]; i -= i & -i; } return r; } void add (int i, int v) { while (i < N) { kum[i] += v; i += i & -i; } } Sad vi mene recite šta znači, odnosno radi, linija i -= i & -i; Happy hacking ![]() |
Autoru: | che.guevara [ 25 Jan 2008, 00:01 ] |
Tema posta: | |
Pošto neki ovdje rade u Paskalu, a (na moje krajnje razočaranje) on nema bitwise operatore (& u gornjem C kodu), evo načina da se zaobiđe ta limitacija: Kod: const
N = 10000; var kum, lsb: array[1..N] of integer; procedure initLSB(); var i: integer; begin for i:=1 to N do if i mod 2 = 0 then lsb[i] = lsb[i/2] * 2 else lsb[i] = 1; end; function get(i : integer) : integer; var r: integer; begin r := 0; while (i > 0) do begin r := r + kum[i]; i := i - lsb[i]; end; get := r; end; procedure add(i, v: integer); begin while (i < N) do begin kum[i] := kum[i] + v; i := i + lsb[i]; end; end; Dakle potrebno je samo pozvati funkciju "initLSB" pre korišćenja tabele. Nisam kompajlirao kod (ni ovaj ni prethodni) tako da ako ima bugova, srećno vam bilo debagovanje ![]() I dalje stoji pitanje šta je ono gore (hint: LSB?) |
Stranica 1 od 9 | Sva vremena su u UTC [ DST ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |