Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 278 Swap  (Citit de 5936 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
ditzone
Vizitator
« : Octombrie 15, 2006, 21:25:52 »

Aici puteţi discuta despre problema Swap.
Memorat
Coty
Nu mai tace
*****

Karma: 6
Deconectat Deconectat

Mesaje: 235



Vezi Profilul WWW
« Răspunde #1 : Octombrie 17, 2006, 08:45:28 »

Nu e mult O(N^N)  Eh? Se poate O(N log N) Wink  cu arbori de intervale.
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #2 : Octombrie 17, 2006, 10:37:06 »

Sau mai simplu de implementat cu AIBuri
« Ultima modificare: Octombrie 17, 2006, 17:38:39 de către bogdan2412 » Memorat
rmikeweb
Strain


Karma: -4
Deconectat Deconectat

Mesaje: 20



Vezi Profilul
« Răspunde #3 : Octombrie 17, 2006, 12:41:47 »

Da NlogN e solutia.Eu am facut cu un arbore de intervale si o lista dublu inlantuita si am luat doar 50p Confused
Memorat

Mike
peanutz
Nu mai tace
*****

Karma: 10
Deconectat Deconectat

Mesaje: 296



Vezi Profilul
« Răspunde #4 : Octombrie 17, 2006, 14:23:50 »

Hmm, grafuri... inca nu m-am prea apucat de asa ceva... Cred ca e cazul.. merci Smile
Memorat

....staind....
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #5 : Octombrie 17, 2006, 17:41:14 »

Da NlogN e solutia.Eu am facut cu un arbore de intervale si o lista dublu inlantuita si am luat doar 50p Confused
Tu ai luat Wrong Answer, nu TLE... nu ai luat 50 pct pt ca nu e buna complexitatea... ai tu o greseala in program...  Huh
Memorat
pocaitu
De-al casei
***

Karma: -26
Deconectat Deconectat

Mesaje: 141



Vezi Profilul
« Răspunde #6 : Octombrie 24, 2006, 21:17:27 »

  Am luat 40 de pct cu AIB-uri . Restul TLE . Are ceva daca inainte de program am scris asta pt a simplifica problema ??
 Brick wall .
 
Citat
strcpy(s3,s1);
 strcpy(s1,"2");
 strcat(s1,s3);
 strcpy(s3,s2);
 strcpy(s2,"2");
 strcat(s2,s3);
 
Memorat

This is not a signature ! I repeat, this is not a signature !
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #7 : Octombrie 24, 2006, 21:33:00 »

nu cred ca are ceva, dar, pt orice eventualitate, scoate acele 6 linii si trimite sursa modificata chiar daca nu da raspunsul corect. in cazul in care si atunci iei TLE inseamna ca ai un bug in algoritm (iti cicleaza pe undeva sau nu ai facut n log n)
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
pocaitu
De-al casei
***

Karma: -26
Deconectat Deconectat

Mesaje: 141



Vezi Profilul
« Răspunde #8 : Octombrie 24, 2006, 21:50:19 »

    Am restructurat algoritmul . Nu sunt liniile alea problema . 
  Postez aici codul daca vrea cineva sa ma ajute . Dupa aceea il sterg daca ceva
Cod:
int main()
{ifstream f("swap.in");
 f>>s1>>s2;
 n=strlen(s1);
 ofstream g("swap.out");
 strcpy(s3,s1); strcpy(s1,"2"); strcat(s1,s3); strcpy(s3,s2); strcpy(s2,"2"); strcat(s2,s3);
 for(i=1;i<=n;++i)
   {poz=strchr(s1,s2[i])-s1;
     s1[poz]='1';
     k[poz]=i;
     }
 ...
 return 0;}
« Ultima modificare: Octombrie 24, 2006, 22:59:31 de către fireatmyself » Memorat

This is not a signature ! I repeat, this is not a signature !
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #9 : Octombrie 24, 2006, 22:16:50 »

Cod:
....
 for(i=1;i<=n;++i)
   {poz=strchr(s1,s2[i])-s1;
     s1[poz]='1';
     k[poz]=i;
     }
....
aici e problema... bucata asta e cam O(n^2). incearca sa faci altfel renumerotarea pozitiilor  Very Happy
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
pocaitu
De-al casei
***

Karma: -26
Deconectat Deconectat

Mesaje: 141



Vezi Profilul
« Răspunde #10 : Octombrie 24, 2006, 22:19:26 »

O cautare binara ar fi mai folositoare ?  Huh
« Ultima modificare: Octombrie 24, 2006, 22:26:15 de către C.Ovidiu » Memorat

This is not a signature ! I repeat, this is not a signature !
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #11 : Octombrie 24, 2006, 22:27:45 »

errr... pai retine intr-o matrice cu 26 de coloane (sa o numim A) pt fiecare litera de la 'a' la 'z' pozitiile pe care acestea se gasesc in s1. apoi, cand ai trecut la al doilea sir si esti la pozitia i, trebuie sa retii cate litere de s2[ i ] ai mai intalnit in sirul s2 (fie acest nr X) pana la acea pozitie si numerotezi litera respectiva cu A[ s2[ i ]-'a' ][X] (a X-a aparitie a lui s2[ i ] in sirul s1). sper sa intelegi ceva din balbele mele Smile

Last edit: ti-am scos eu partea importanta din cod... sa nu te panichezi Tongue
« Ultima modificare: Octombrie 24, 2006, 23:00:30 de către fireatmyself » Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
Coty
Nu mai tace
*****

Karma: 6
Deconectat Deconectat

Mesaje: 235



Vezi Profilul WWW
« Răspunde #12 : Octombrie 29, 2006, 14:59:15 »

In concurs am luat 100 la prob. asta, cand am retrimis am luat 6 TLE ... ati modificat limita? ... sau sunt eu cam batut in cap si am uitat sursa la scoala?  Aha
Memorat
ditzone
Vizitator
« Răspunde #13 : Octombrie 29, 2006, 21:08:29 »

Limita de timp e aceeasi ca in timpul concursului...
Memorat
MarcvsHdr
Strain
*

Karma: 1
Deconectat Deconectat

Mesaje: 44



Vezi Profilul
« Răspunde #14 : August 31, 2007, 10:44:46 »

Eu am facut O(NlogN) si am luat 100, dar ma intrebam... SIGUR nu se poate O(N)? Era problema aia... camion sau cum se numea... de la campion, in care se intampla ceva asemanator, doar ca lua operatiile in ordine inversa.  Think
Memorat
APOCALYPTO
Nu mai tace
*****

Karma: 3
Deconectat Deconectat

Mesaje: 250



Vezi Profilul
« Răspunde #15 : Iunie 07, 2010, 14:19:40 »

 
Cod:
int main()
{ifstream f("swap.in");
 f>>s1>>s2;
 n=strlen(s1);
 
Salut!
 Imi aratati si mie va rog cum ati facut citirea. Vrea sa invat mai multe metode ca sa-mi fie mai usor cand codez.

Multumesc anticipat!
Memorat
mathboy
Moderatori infoarena
Nu mai tace
*****

Karma: 150
Deconectat Deconectat

Mesaje: 259



Vezi Profilul
« Răspunde #16 : Iunie 07, 2010, 19:48:18 »

Uite aici citirea mea :
Cod:
        freopen ("swap.in", "r", stdin);
freopen ("swap.out", "w", stdout);
scanf ("%s%s\n", a, b);
n = strlen (a); m = strlen (b);
Memorat
danalex97
Vorbaret
****

Karma: 54
Deconectat Deconectat

Mesaje: 192



Vezi Profilul
« Răspunde #17 : Iulie 30, 2012, 12:23:37 »

Eu am facut O(NlogN) si am luat 100, dar ma intrebam... SIGUR nu se poate O(N)? Era problema aia... camion sau cum se numea... de la campion, in care se intampla ceva asemanator, doar ca lua operatiile in ordine inversa.  Think

Sigur nu se poate. Metoda O(N lg N) are la baza metoda greedy.
Memorat
bciobanu
Strain


Karma: 5
Deconectat Deconectat

Mesaje: 19



Vezi Profilul
« Răspunde #18 : Octombrie 05, 2015, 10:57:46 »

Buna ziua, am o sursa in O(nlogn) care ia 80p cu TLE pe 2 teste. Nu imi pot explica de ce o sursa in care calculez rezultatul, dar nu il afisez, are timpul de executie mult mai mic decat cea in care afisez rezultatul.

LE: Imi imaginez ca toata secventa de calcul a rezultatului a fost optimizata de compilator (pentru ca nu il mai foloseam dupa), dar intrebarea ramane deschisa: ce trebuie sa modific pentru a se incadra in timp?

LLE: Am luat 100 cu mergesort modificat, se descurca mult mai bine decat AIB-urile pentru aceasta problema.
« Ultima modificare: Octombrie 05, 2015, 12:34:19 de către Bogdan Ciobanu » Memorat
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #19 : Octombrie 05, 2015, 12:44:21 »

LLE: Am luat 100 cu mergesort modificat, se descurca mult mai bine decat AIB-urile pentru aceasta problema.

Nu cred ca "se descurca mult mai bine". Eu am 100 cu 12ms cu AIB... Poate faci tu ceva aiurea sau iti intra in bucla infinita
Memorat
Cristian1997
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 20



Vezi Profilul
« Răspunde #20 : Octombrie 05, 2015, 17:04:50 »

Daca ai spus ca ai luat 100p cu AIB si timp de 12ms, ai putea te rog sa-mi spui ce sa mai optimizez la codul meu, ca nu reusesc sa iau testul 8.

http://www.infoarena.ro/job_detail/1496861

Multumesc.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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