infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Cosmin Negruseri din Aprilie 12, 2006, 16:07:28



Titlul: 242 Password
Scris de: Cosmin Negruseri din Aprilie 12, 2006, 16:07:28
Aici puteţi discuta despre problema Password (http://infoarena.ro/problema/password).


Titlul: Raspuns: 242 Password
Scris de: Tudorica Constantin Alexandru din Aprilie 14, 2006, 14:05:06
Citat
Parola este data de cea mai mica rotatie la stanga (in ordine lexicografica) a cuvantului cheie.
Asta inseamna ca trebuie sa rotim cuvantul de cat mai putine ori astfel incat sa il obtinem in ordine cat mai crescatoare a litereror?


Titlul: Raspuns: 242 Password
Scris de: Bogdan-Alexandru Stoica din Aprilie 14, 2006, 14:11:48
da  :ok:


Titlul: Re: Raspuns: 242 Password
Scris de: Tiberiu-Lucian Florea din Aprilie 14, 2006, 16:50:05
ordine cat mai crescatoare

Interesanta exprimare  [-X


Titlul: Raspuns: 242 Password
Scris de: Rimovecz Ioan Mihai din Mai 17, 2006, 08:40:10
Mi-ati putea da si mie un hint. Singura solutie pe care o stiu la problema asta merge in N^2 si evident nu intra in timp.


Titlul: Raspuns: 242 Password
Scris de: Andrei Grigorean din Mai 17, 2006, 13:45:25
http://info.devnet.ro/download.php

downlodeaza-ti articolul. :)


Titlul: Raspuns: 242 Password
Scris de: Rimovecz Ioan Mihai din Mai 24, 2006, 07:04:28
Ok, o sa-l citesc si o sa incerc sa il implementez.


Titlul: Răspuns: 242 Password
Scris de: Kerekes Felix din Aprilie 17, 2007, 23:06:16
Nu e putin cam stransa limita de timp?

Cu suffix array in O(NlogN) nu scot decat 5 puncte


Titlul: Răspuns: 242 Password
Scris de: Cosmin Negruseri din Aprilie 18, 2007, 05:28:04
Se poate face in O(n) ... si constanta la suffix array in O(n log n) e cam mare.


Titlul: Răspuns: 242 Password
Scris de: Andrei Grigorean din Aprilie 18, 2007, 14:20:48
oricum, e mult mai lejer sa implementezi rotatii decat suff array..


Titlul: Răspuns: 242 Password
Scris de: Kerekes Felix din Aprilie 18, 2007, 17:35:05
Stiu asta, am si facut implementarea in O(N), dar nu prea mi se pare firesc sa iei 5 puncte cu O(NlogN)

Practic nu se poate face o deparatajre intre solutii ca si complexitate. Si totusi nu puteti spune ca NlogN e brut, ca sa primeasca 0-10 puncte


Titlul: Răspuns: 242 Password
Scris de: Airinei Adrian din Aprilie 18, 2007, 18:13:12
Depinde ce suffix array ai facut, eu tin minte ca luam in jur de 80 cu suffix array la problema asta.


Titlul: Răspuns: 242 Password
Scris de: Adrian Diaconu din Aprilie 18, 2007, 21:12:27
Eu am luat 100 cu suffix array :)


Titlul: Răspuns: 242 Password
Scris de: Cosmin Negruseri din Aprilie 19, 2007, 05:37:14
O modalitate care nu ar merge ar fi sa sortezi cu qsort sufixele :)).


Titlul: Răspuns: 242 Password
Scris de: Kerekes Felix din Aprilie 19, 2007, 18:11:41
Intr-adevar am incercat o alta implementare si am ajuns pana la 80 de puncte folosind aceasta abordare.

Prima oara inceram sa implementez la fel ca in articolul despre siruri de sufixe de la sectiunea downloads, cu o complexitate totala O(N*logN*logN), nu O(N*logN) cum am zis la inceput (am uitat sa includ si sortarea :P). Pana la urma nu m-am lamurit daca abordarea e gresita sau implementarea mea (totusi de ce TLE si nu WA atunci?).


Titlul: Răspuns: 242 Password
Scris de: Codrea Marcel din Aprilie 19, 2007, 18:37:53
Cu suffix array se ia 80 puncte din cauza timpului depasit , intotdeauna algoritmul va furniza raspunsul corect , cel putin asa cred !


Titlul: Răspuns: 242 Password
Scris de: Kerekes Felix din Aprilie 19, 2007, 20:33:54
Normal ca va furniza raspunsul corect, dar eu ma refeream la faptul ca poate am implementat gresit arborii de sufixe. Si acum depinde de fiecare implementare, pentru ca sunt destule posibilitati, de la O(N^2*logN) pana la O(N) se pare (nu am implementat niciodata). Teoretic, in O(N) ar trebui sa intre de 100 (folosind suffix array, nu rotatii), chiar daca constanta e ceva cam mare.

A incercat cineva cu suffix array in O(N) ?


Titlul: Răspuns: 242 Password
Scris de: Andrei Grigorean din Aprilie 20, 2007, 08:52:23
Nu cred ca merg prea bine suff array in O(n) in practica.


Titlul: Răspuns: 242 Password
Scris de: Gabriel Bitis din Ianuarie 08, 2008, 10:20:52
Am rezolvat problema asa cum e descrisa in articolul "Rotatie lexicografic minima". Am luat 80 puncte cu 4 WA. Timpii de executie sunt de 0 si 4 ms... Un hint? ce poate fi gresit?

LE: am gasit... nu era chiar ca si in articol...


Titlul: Răspuns: 242 Password
Scris de: Mircea Pasoi din Ianuarie 09, 2008, 09:06:02
Ce nu era ca in articol?


Titlul: Răspuns: 242 Password
Scris de: Gabriel Bitis din Ianuarie 09, 2008, 13:20:09
Ce nu era ca in articol?
in articol apare pseudocodul urmator:
Cod:
   
   1. min <- 0; p <- 1; l <- 1; 
   2. cat timp (p < N) AND (min+l+1 < N) executa 
   3.     daca S[min+l] = S[p+l] atunci l <- l+1; 
   4.     daca S[min+l] < S[p+l] atunci p <- p+l+1; l <- 0; 
   5.     daca S[min+l] > S[p+l] atunci min <- max(min+l+1, p); p <- min+1; l <- 0; 
   6. sfarsit cat timp 
   7. scrie min 
luam 80 de puncte cu asta. am luat 100 modificand la linia a doua din "cat timp (p < N)" in "cat timp (p < N-1)"


Titlul: Răspuns: 242 Password
Scris de: Mircea Pasoi din Ianuarie 09, 2008, 14:34:02
Nu cred ca modificarea ta este corecta, chiar daca ai luat 100. Cred ca motivul pentru care luai 80 era ca p+l poate fi mai mare ca N, deci trebuie sa faci (p+l)%N cand indexezi S.


Titlul: Răspuns: 242 Password
Scris de: Andrici Cezar din Martie 21, 2009, 10:14:04
care sunt rotatiile?
mississippi
ississippim
ssissippimi
sissippimis
issippimiss
ssippimissi
sippimissis
ippimississ
ppimississi
pimississip
mississipp
???


Titlul: Răspuns: 242 Password
Scris de: Tirca Bogdan din Martie 22, 2009, 10:17:09
la problema asta ori eram eu prea ametit si nu faceam citirea bine :)) ori kiar nu merge cu FILE *f(..)...Andrici incearca sa folosesti fstream.La mine asta era problema :angry: :angry: :angry:


Titlul: Răspuns: 242 Password
Scris de: Andrici Cezar din Martie 22, 2009, 14:24:02
mie imi citeste bine, la testul acela imi face bine, dar pentru restu nu, nu inteleg ce am gresit:(( eu lucrez in pascal:d nu in cpp


Titlul: Răspuns: 242 Password
Scris de: Dragos-Alin Rotaru din Iunie 17, 2010, 12:12:26
Ce modificari au facut cei care luau 80 pentru a lua 100 (cu O (N) iau TLE) ? Nu vad unde gresesc   ](*,)


Titlul: Răspuns: 242 Password
Scris de: Andrei Grigorean din Iunie 17, 2010, 12:16:07
Operatia modulo consuma foarte mult timp. Incearca sa scapi de ea si ar trebui sa obtii 100 de puncte.


Titlul: Răspuns: 242 Password
Scris de: Dragos-Alin Rotaru din Iunie 17, 2010, 12:19:58
Am facut din modulo scadere dar acelasi rezultat -> TLE pe ultimele 4 teste :(
LE: Se pare ca greseala era ca initializam prost o variabila. Multumesc lui wef si blasterz pt ajutor :D


Titlul: Răspuns: 242 Password
Scris de: Marian Darius din Noiembrie 25, 2012, 20:59:56
Ma ajuta si pe mine cineva? De ce iau 4 TLE-uri cu sursa asta? Ce complexitate are strcmp?

cod:
#include<stdio.h>
#include<string.h>
char s[200005],sol[200005];
int main()
{
   freopen("password.in","r",stdin);
   freopen("password.out","w",stdout);
   int n,i,n1,nr=0;char aux;
   gets(s);n1=strlen(s);
   strcpy(sol,s);
   strcat(s,sol);
   n=strlen(s);n--;s[n]=0;
   for(i=0;i<n1;i++)
      {
          aux=s[i+n1];s[i+n1]=0;
          if(strcmp(s+i,sol)<0)
          {
              strcpy(sol,s+i);
              nr=i;
          }
          s[i+n1]=aux;
      }
   printf("%d\n",nr);
   return 0;
}


Titlul: Răspuns: 242 Password
Scris de: Mihai Calancea din Noiembrie 25, 2012, 21:01:03
O(n).


Titlul: Răspuns: 242 Password
Scris de: Marian Darius din Noiembrie 25, 2012, 21:02:13
Asta ar insemna ca complexitatea totala ar fi O(N^2)? Dar atunci de ce iau asa de mult?


Titlul: Răspuns: 242 Password
Scris de: Mihai Calancea din Noiembrie 25, 2012, 21:05:07
Asta ma intrebam si eu.


Titlul: Răspuns: 242 Password
Scris de: Pirtoaca George Sebastian din Ianuarie 03, 2013, 17:07:29
Am citit articolul despre rotatie lexicografic minima si am o intrebare despre cazul 3.
Rotatiile sunt :

mississippi 0
ississippim 1
ssissippimi 2
sissippimis 3
issippimiss 4
ssippimissi 5
sippimissis 6
ippimississ 7
ppimississi 8
pimississip 9
imississipp 10

La pasul 8 studiem rotatia 4(dupa tabelul din articol). Rotatia minima pana in acel moment este 1. Primele pantru caractere sunt identice pentru R1 si R4, iar al cincilea caracter este "mai mic" in R4 decat in R5. Daca folosesc pasii din cazul 3 o sa am : min = 6, p = 7, l = 0, dar R4 < R6. De ce nu avem min = 4 ca potential candidat ci 6?

L.E. : Mi-am dat seama pana la urma.


Titlul: Răspuns: 242 Password
Scris de: Denis Mita din Martie 21, 2015, 20:47:34
Cred ca ar trebui introduse niste teste noi. Spre exemplu, cu sursa mea de 100 la problema, pe testul bab imi da raspunsul 0, desi corect ar fi 1.


Titlul: Răspuns: 242 Password
Scris de: calin brita din Decembrie 12, 2015, 13:35:43
De ce nu poate fi solutia ippimississ (care necesita doar 8 rotatii), fata de solutia data imississipp care necesita 10 rotatii?


Titlul: Răspuns: 242 Password
Scris de: Vlad Rochian din Decembrie 13, 2015, 09:59:39
De ce nu poate fi solutia ippimississ (care necesita doar 8 rotatii), fata de solutia data imississipp care necesita 10 rotatii?

Pentru că nu este cea mai mică lexicografic. m este mai mic decât p.


Titlul: Răspuns: 242 Password
Scris de: Lucian Maciuca din Decembrie 15, 2015, 11:57:55
Frumoasa problema, dupa ceva timp i-am dat si eu de cap. :weightlift: