Pagini: 1 [2]   În jos
  Imprimă  
Ajutor Subiect: 170 Subsir 2  (Citit de 10770 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #25 : Aprilie 18, 2008, 18:59:00 »

Citat
Spunem ca un subsir B=(bi1,bi2...biN) este crescator maximal daca ai1 ≤ ai2 ≤ ... ≤ aiK si nu exista nici un x astfel incat: sa existe j < K, ij < x < ij+1 si aij ≤ ax ≤ aij+1, sau 1 ≤ x < i1 si ax ≤ ai1 sau iK < x ≤ N si aiK <= a

pentru exemplul lui wefgef:
8 6 3 9 10 3 2 5 1 3 7 5 2 8 4 10.

subsiruri crescatoare care nu sunt maximale sunt
8 6 3 9 10 3 2 5 1 3 7 5 2 8 4 10 (se mai poate extinde cu 9 si cu ultimul 10)
8 6 3 9 10 3 2 5 1 3 7 5 2 8 4 10 (se mai poate extinde cu ultimul 10)
8 6 3 9 10 3 2 5 1 3 7 5 2 8 4 10 (se mai poate extinde cu 7, 8, 10, sau cu 5, 8, 10).

daca din exemplele de mai sus consideram intr-o secventa si numerele boldite si numerele subliniate, vei avea subsiruri crescatoare maximale.
« Ultima modificare: Aprilie 18, 2008, 19:09:23 de către Bogdan A. Stoica » Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
amadaeus
Client obisnuit
**

Karma: 28
Deconectat Deconectat

Mesaje: 93



Vezi Profilul
« Răspunde #26 : Aprilie 18, 2008, 20:01:53 »

Aha , am inteles, multumesc, dar cum ramane cu cel mai scurt subsir crescator maximal , asta ce inseamna?
Pe scurt, un subsir crescator este maximal daca nu mai poate fi extins. Trebuie sa determini cel mai scurt astfel de subsir. Un exemplu concludent este cel dat de Marius acum cateva posturi:
Cod:
subsir2.in 
12
19 17 -14 17 -6 21 19 8 -17 19 15 -22

subsir2.out
1
12
Aici, subsirul format de al doisprezecelea element (-22) este maximal (nu mai poate fi extins) si este cel mai scurt.

In alta ordine de idei, cred ca ar trebui modificati doi indici in restrictiile problemei, mai exact acolo unde apare B=(bi1,bi2...biN) modificat in B=(bi1,bi2...biKwink
Memorat

"one of these days I'm going to cut you into little pieces..."
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #27 : Aprilie 18, 2008, 21:22:16 »

Dintre toate subsirurile crescatoare maximale il alegi pe cel de lungime minima.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
ciprianf
De-al casei
***

Karma: 11
Deconectat Deconectat

Mesaje: 104



Vezi Profilul
« Răspunde #28 : Aprilie 19, 2008, 07:29:57 »

Wow...am inteles...multumesc tuturor

LE:

tot nu-mi iese aceasta problema. m-am uitat si pe sol oficiale , am facut ca acolo si tot nu e bine...

Cod:
l[n]=1;
for(i=n-1;i>=1;i--){
min=l[i]=INF;
for(j=i+1;j<=n;j++){
if(v[j]>=v[i] && l[j]<l[i] && v[j]<min){
l[i]=l[j];
min=v[j];
p[i]=j;
}
if(v[j]>=v[i])
ok[j]=1;
}
if(l[i]==INF) l[i]=0;
l[i]++;
}
min=INF;
for(i=1;i<=n;i++)
if(l[i]<min && !ok[i]){
min=l[i];
poz=i;
}
....
l(i) = lungimea minima a unui subsir cresc maximal care incepe de pe pozitia i
p() = poz(pt reconstituire)
ok(i) = 1 daca subsirul care incepe de pe poz i poate fi lipit cu cineva din stanga, si 0 in caz contrar.

Va puteti da seama unde am gresit? Multumesc anticipat
« Ultima modificare: Aprilie 21, 2008, 09:56:57 de către Farcasanu Ciprian » Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #29 : Aprilie 21, 2008, 12:06:08 »

nu cred ca e buna conditia asta
Cod:
 if(v[j]>=v[i] && l[j]<l[i] && v[j]<min) 
scoate l[ j ] < l[ i ]. daca se indeplineste conditia (fara l), reactualizei min si apoi vezi daca solutia curenta iti imbunatasete solutia calculata anterior, adica:
Cod:
if (l[j]+1 < l[i]) {
l[i] = l[j]+1;
p[i] = j; }
ai grija ca in caz de egalitate reactualizezi p[ i ] cu minimul dintre val lui si j.
Memorat

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

Karma: 11
Deconectat Deconectat

Mesaje: 104



Vezi Profilul
« Răspunde #30 : Aprilie 22, 2008, 08:34:02 »

Intai vreau sa nu mai iau wa, apoi vad eu cum fac cu sirul lexicografic, asta ar trebui sa-mi iasa....am modificat putin sursa dar tot nu iese
Cod:
for(i=n-1;i>=1;i--){
min=l[i]=INF;
for(j=i+1;j<=n;j++){
if(v[j]>=v[i] && v[j]<min){
l[i]=l[j];
min=v[j];
p[i]=j;
}
if(v[j]>=v[i])
ok[j]=1;
}
if(l[i]==INF) l[i]=0;
l[i]++;
}
daca gasesc un v[j]<min nici nu ma mai intereseaza ce lungime are l(j),il iau automat pe ala pt ca e cel bun. Fie urmatoarele 2 cazuri:
........7 3 4 9 9 10......      - presupunem ca v(i)=7; cand caut un j minim il gases pe primul 9 care e mai lung dar e corect, apoi daca l-as lua pe al 2lea 9 il iau pe acesta in considerare , si ar veni subsirul" 7 9 10" dar este gresit pt ca poate fi extins cu primul 9.

.......7 2 3 9 11 13 9       - v(i)=7. acum e corect sa-l iau tot pe primul 9(subsirul format ar fi 7 9 9)
=> nu ma intereseaza daca gasesc un alt v(j)==min

...dupa lupte seculare tot nu mi-a iesit ...imi mai poti da niste indicii?Very Happy
« Ultima modificare: Aprilie 22, 2008, 08:40:35 de către Farcasanu Ciprian » Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #31 : Aprilie 22, 2008, 09:19:31 »

tot nu e bine. am zis ca in if-ul:
Cod:
if(v[j]>=v[i] && v[j]<min)
reactualizezi doar minimul.

trebuie sa fie ceva de genul
Cod:
if (V[j] >= V[i] && V[j] < min)
{
        min = V[j];
        if (l[i] > l[j]+1)
        {
              l[i] = l[j]+1;
              p[i] = j;
        }
}

de ce nu faci un debug pe un test care nu-ti merge. vezi la ce i nu iti da cum ar trebui.
Memorat

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

Karma: 11
Deconectat Deconectat

Mesaje: 104



Vezi Profilul
« Răspunde #32 : Aprilie 23, 2008, 10:19:34 »

nu-mi iese deloc lungimea minima lexicografica
Cod:
# for(i=n-1;i>=1;i--){  
#         min=l[i]=INF; 
#         for(j=i+1;j<=n;j++){ 
#                 if(v[j]>=v[i] && v[j]<min){ 
#                         min=v[j]; 
#                         if(l[j]+1<l[i]){ 
#                             l[i]=l[j]+1; 
#                             p[i]=j; 
#                         } 
#                         else if(l[j]+1==l[i]) 
#                             if(v[j]<v[p[i]]) 
#                                 p[i]=j; 
#                     } 
#                 if(v[j]>=v[i])   
#                     ok[j]=1; 
#         } 
#         if(l[i]==INF) l[i]=1;

unde gresesc?Very Happy
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #33 : Aprilie 23, 2008, 10:38:27 »

Te-ai uitat peste articolul cu solutii?
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
ciprianf
De-al casei
***

Karma: 11
Deconectat Deconectat

Mesaje: 104



Vezi Profilul
« Răspunde #34 : Aprilie 23, 2008, 19:53:50 »

m-am uitat, am facut ca acolo si tot nu iese
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #35 : Aprilie 23, 2008, 19:59:27 »

Inseamna ca nu ai facut ca acolo Wink
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
ciprianf
De-al casei
***

Karma: 11
Deconectat Deconectat

Mesaje: 104



Vezi Profilul
« Răspunde #36 : Aprilie 23, 2008, 20:47:43 »

poate am inteles eu gresit ce zice acolo....
LE: am rezolvat-o pana la urma
« Ultima modificare: Aprilie 24, 2008, 11:21:54 de către Farcasanu Ciprian » Memorat
maria_d
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #37 : Iulie 09, 2008, 15:16:16 »

imi poate spune cineva la ce se refera la problema asta cu lungime minima?....eu observ ca e subsirul de lungime maxima
« Ultima modificare: Iulie 09, 2008, 15:22:21 de către maria darabont » Memorat
theprdv
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 11



Vezi Profilul
« Răspunde #38 : Ianuarie 24, 2015, 14:49:52 »

un subsir crescator maximal e acelasi cu cel mai scurt subsir crescator maximal? sau care e diferenta intre un subsir crescator maximal si unul cel mai scurt crescator maximal? Poc
Memorat
SebiSebi
Nu mai tace
*****

Karma: 76
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #39 : Ianuarie 24, 2015, 17:00:19 »

Un subsir crescator este maximal daca nu mai poti adauga elemente la el care sa pastreze invariantul de monotonie. In seventa 2 1 2 3 4, subsirul 1 3 4 nu este maximal deoarece se poate extinde la 1 2 3 4. Acum din multimea subsirurilor crescatoare maximale tu trebuie sa il gasesti pe cel de lungime minima si minim lexicografic.
Memorat
tziplea_stefan
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #40 : Septembrie 16, 2017, 19:34:00 »

Ma chinui de ceva vreme pe problema asta si am obtinut doar 99p, ca pe testul 6 solutia mea nu e minima lexicografica. Imi poate da va rog cineva un test sa ma prind ce gresesc? Aici e sursa mea: http://www.infoarena.ro/job_detail/2022631
Memorat
Pagini: 1 [2]   În sus
  Imprimă  
 
Schimbă forumul:  

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