Inbox for mugurel_ionut@yahoo.com    Yahoo! - My Yahoo!     Options - Sign Out - Help
Mail    Addresses    Calendar    Notepad   

Download Attachments
    Prev | Next | Inbox
From: "Mihai Patrascu" <mihai_p@pcnet.ro>  | Block Address | Add to Address Book
To: "probleme" <probleme@ldc.ro>
Subject: diverse probleme
Date: Sun, 11 Mar 2001 20:22:34 +0200

Problema "un alt fel de hanoi" e chiar banala daca poti face O(N**3) 
mutari.

Sa vedem cine e tare la float-uri... Facem un Belman-Ford cu distantele
float-uri (sau double, nu conteaza):
{
    float a[MAXN], d[MAXN][MAXN];
    int chg, i, j;

    for(*a = 0.0, i = 0; i < n; a[i++] = 1.0/0.0) ;
    do {
        for(i = 0; i < n; i++)
            for(j = 0; j < n; j++)
                if(a[j] > a[i] + d[i][j])
                    a[j] = a[i] + d[i][j], chg = 1;
    } while(chg);
}

Am implementat ceva cam asa de curand si intra intr-o bucla infinita.
Intrebare didactica: ce trebuie schimbat pentru ca sa nu intre 
niciodata
intr-o bucla infinita? [daca credeti ca e corect, va inselati; motivul
pentru care s-a blocat nu e ca existau cicluri negative] Asta e bine de
stiut la concursuri, caci pe teste mici&normale nu se intampla nimic, 
doar
pe teste mari&ciudate Belman-Fordul de mai sus se blocheaza...

Intrebare (dificila) pentru programatorii veterani: de ce poate intra 
in
ciclu infinit?

========= Algoritmi aplicati in practica

Presupun ca multi ati auzit de algoritmul move-to-front (pe la 
compresii).
Chestia e cam asa: tii o lista cu caracterele (0..255) si la fiecare
caracter din fisierul de intrare scrii la iesire pozitia lui in lista, 
dupa
care il muti primul in lista. Challenge-ul este cum implementezi asta 
astfel
incat pentru fiecare caracter sa fie O(logK), unde K e pozitia 
caracterului
in lista inainte de a-l muta primul.

========= O problema de concurs

Se da un lac de MxN patratele, acoperit cu gheata, exceptand unele 
patratele
care se citesc din fisierul de intrare. O broasca trebuie sa mearga de 
la
(1,1) la (M,N) si sa se intoarca inapoi. Ea face sarituri ca calul la 
sah.
Evident, ea nu poate pasi decat pe gheata. Problema e ca unde paseste 
ea se
sparge gheata, deci nu poate trece printr-o patratica de doua ori. 
Aflati
itinerariul cu numar minim de sarituri. [se cere nr. min de mutari;
reconstituirea daca aveti o zi ploioasa la dispozitie]

Problema s-a mai dat, dar noutatea e ca de data asta nu se accepta 
back-uri
(M,N<=100 de ex.).

Sa nu ziceti ca n-aveti probleme! BTW, mai dati si voi probleme 
interesante,
vin concursurile si nu stiu unde mai pot gasi probleme noi.

mihai_p



     Prev | Next | Inbox
Download Attachments

Yahoo! Messenger - Send instant messages to friends!
Address Book · Alerts · Auctions · Bill Pay · Bookmarks · Briefcase · Broadcast · Calendar · Chat · Classifieds · Clubs · Companion · Domains · Experts ·Games · Greetings · Home Pages · Invites · Mail · Maps · Member Directory · Messenger · My Yahoo! · News · PayDirect · People Search · Personals · Photos · Shopping · Sports · Stock Quotes · TV · Travel · Weather · Yahooligans · Yellow Pages · more...

Privacy Policy- Terms of Service - Guidelines
Copyright © 1994-2001 Yahoo! Inc. All rights reserved.