Pagini: [1] 2   În jos
  Imprimă  
Ajutor Subiect: 039 Coins  (Citit de 10842 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
domino
Echipa infoarena
Nu mai tace
*****

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« : Noiembrie 18, 2004, 00:28:46 »

Aici puteţi discuta despre problema Coins.
Memorat
Figure09
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 9



Vezi Profilul
« Răspunde #1 : Februarie 24, 2005, 21:21:42 »

care e faza cu problema asta??? adik... sunt o groaza care au (printre care shi eu) 10 puncte... doar primul test.. shi nu pot sa intzeleg de ce... daca poate cineva sa ma ajute.. pur shi simplu aflu numarul de mutari pana cand toate coin-urile ajung pe pozitiile 1,2,3... shi vad daca numarul lor e par sau impar... care e faza?? am facut pana shi pe numere mari, ca sa fiu sigur, shi tot doar primul test il iau... help plz...
Memorat
spixie
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 7



Vezi Profilul
« Răspunde #2 : Februarie 24, 2005, 21:33:43 »

faza e ca trebuie sa fii atent la enunt..! zice : "O mutare consta din alegerea unui galben si deplasarea sa in primul patratel  liber din stanga sa" Primul patratel liber nue neaparat primul patratel din stanga valorii alese, adica pot alege un 1 si sa sar cu el peste alti 5 de unu ex: 0 1 1 1 1 1 1 ..... ultimul 1 ajunge primul intr-o singura mutare...
De asta exista si conditia ca secundul sa joace optim
cel putin asa cred eu!
Memorat

Blackened is the end!
unholyfrozen
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 15



Vezi Profilul
« Răspunde #3 : Martie 21, 2005, 17:08:48 »

Ok...
Am si eu o intrebare : solutia mea determina pur si simplu care jucator castiga pentru o configuratie data recursiv. Am incercat 2 cazuri : cand gasesc o solutie care ii convine primului jucator, ma opresc din alte cautari, al doilea : nu ma opresc pt ca toate configuratiile le retin intr-un vector de vreo 2^22 elemente si cand n este destul de mare unele configuratii se repeta. Va rog spuneti-mi daca exista alta solutie (totusi 3 sec timpul) sau daca trebuie sa mai optimizez ca sa imi mearga si ultimele 3 teste.
10x
Memorat
cristi8
Vizitator
« Răspunde #4 : Martie 21, 2005, 17:21:49 »

eu am facut cu un vector mare (toate configuratile) de 1 sau 0.. daca configuratia respectiva e castigatoare pt cel care incepe. daca faceam cu memoizare iesea din timp la un test parca, dar daca calculam la inceput tot vectorul si dupa aia doar dadeam raspunsul, mi-a intrat in timp.
Memorat
unholyfrozen
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 15



Vezi Profilul
« Răspunde #5 : Martie 21, 2005, 18:07:14 »

Am calculat tot vectorul la inceput !  Smile
Toate imi ies din timp !  Confused
Poate imi explici cum l-ai calculat mai rapid...
10x
Memorat
cristi8
Vizitator
« Răspunde #6 : Martie 21, 2005, 19:26:12 »

in primul rand, am facut castigatoare toate configuratiile de genu:
00000001
00000011
00000111
00001111
00011111
...

, si pierzatoare alea de genu (cred ca intra in timp si fara astea) :
00000010
00000101
00001011
00010111
...

dupa aia am luat fiecare configuratie in parte pt care nu stiam daca e castigatoare sau pierzatoare, si am verificat daca se poate ajunge intr-o conf. pierzatoare, caz in care marcam a[conf]=1 si treceam la urmatoarea. daca nu gaseam nici o conf. pierzatoare in care se poate ajunge, a[conf]=0;

e destul de clar ?
vrei sa postez si cod (daca nu se supara nimeni) ?

PS: am retinut bitii in ordine inversa
Memorat
unholyfrozen
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 15



Vezi Profilul
« Răspunde #7 : Martie 21, 2005, 19:47:26 »

Pai asa il construiesc si eu!
numai ca pt a completa tot vectorul e suficient sa calculezi numai pt 22 de configuratii(fara sa te opresti cand ai gasit o configuratie care itzi convine)
00000000000001
00000000000011
00000000000111
..
11111111111111
acestea luate ca in exemplu
daca ai facut recursiv posteaza putzin functia pls
Memorat
cristi8
Vizitator
« Răspunde #8 : Martie 21, 2005, 19:53:19 »

sper ca e destul de clara, ...ca am scris-o in graba, am incercat mai multe variante (memoizare, etc).. si am ajuns la functia asta care contine si goto Very Happy

Cod:

#define n 22
#define getb(nr,pos) ( (nr) & 1<<(pos-1) )
#define set1(nr,pos) ( (nr) |=  (1<<(pos-1)) )
#define set0(nr,pos) ( (nr) &= ~(1<<(pos-1)) )

int a[1<<n];

void init()
{
  int i,conf=0, confmax,pos,conf2;
  memset(a,255, sizeof(a));
  for(i=1;i<=n;i++)
  {
    set1(conf,i);
    a[conf]=1;
    if(i>1)
      a[conf & ~(1<<i-2)]=0;
  }
  confmax=conf;
  for(conf=1;conf < confmax;conf++)
    if(a[conf]==-1)
    {
      conf2=conf;
      pos=1;
      while(getb(conf,pos))
        pos++;
      i=pos;
      while(pos<n)
      {
        set1(conf2,pos);
        i++;
        while(getb(conf,i))
        {
          set0(conf2,i);
          if(a[conf2]==0)
            goto ExitTRUE;
          set1(conf2,i);
          i++;
          if(i>n)
            goto ExitFALSE;
        }
        set0(conf2,pos);
        pos=i;
      }
    ExitFALSE:
      a[conf]=0;
      continue;
    ExitTRUE:
      a[conf]=1;
    }
}
Memorat
vladut.forum
Vizitator
« Răspunde #9 : August 05, 2005, 16:16:32 »

eu n-am inteles doua lucruricare primul patratel liber din stanga lui :O
de exemplu
Cod:

0 1 0 1 1 0 0 0 0 0 00000000
e valida mutarea ultimului unu in patratica in prima patratica libera...
1 1 0 1 0 0 0 0 0 0 0 0000000

asta o fii ca daca o luam asa 0 de pe pozitia 1, este primul zero care apare, si in plus apare si primu in stanga...
si ce inseamna ca Secundu muta optim...
daca fac recursiv ii simulez cum joaca, cum ar trebuii sa tin cont de mutare valida
si se considera ca primul castiga banii, daca dupa toate tipurile de mutari facute recursiv nu pierde nicioadata, o fii asta...
Memorat
cristi8
Vizitator
« Răspunde #10 : August 05, 2005, 18:32:20 »

Citat din mesajul lui: vladut.forum
eu n-am inteles doua lucruricare primul patratel liber din stanga lui :O
de exemplu
Cod:

0 1 0 1 1 0 0 0 0 0 00000000
e valida mutarea ultimului unu in patratica in prima patratica libera...
1 1 0 1 0 0 0 0 0 0 0 0000000

asta o fii ca daca o luam asa 0 de pe pozitia 1, este primul zero care apare, si in plus apare si primu in stanga...


pai "primul patratel liber din stanga lui" inseamna ca de la pozitia 1-lui te duci o patratica in stanga, daca e libera, ESTE POSIBIL sa-l muti acolo. daca nu e libera, te mai duci o patratica in stanga si vezi daca e libera. si tot asa. adica daca alegi un 1, ai cel mult o mutare posibila (nu ai nici una doar daca in stanga lui sunt numai 1).

Cod:

0 1 0 1 1 0 0 0 0 0 00000000
daca muti ultimul 1, ajungi la:
0 1 1 1 0 0 0 0 0 0 0 0000000


PS: citeste si posturile precedente.. s-a mai explicat
Memorat
vladut.forum
Vizitator
« Răspunde #11 : August 05, 2005, 19:28:39 »

ok, m-am mai lamurit, acum fac asa, fac recusiv, toate posibilitatile de mutare, adica cum se poate juca meciu in cate feluri....
asa
si de fiecare data cand castiga Paftenie, numar...cand castiga S, numar..
la urma daca winsP>=winsS ii dau banii pt tabla aia, si iau numa 30, hai ca ma mai uit prin cod, sa vad daca am gresit pe undeva...
Memorat
cippi
Vizitator
« Răspunde #12 : Septembrie 04, 2005, 15:23:15 »

Imi iau 80 orice as face...imi da WA la ultimele 2 teste...
E ciudat ce au alea special si primele 8 nu au...
aveti vreo idee ce ar putea fi ? se supara cineva daca postez codul ? (are 53 linii parca..) sau se uita cineva ?  Very Happy
Memorat
the_godfather
Strain
*

Karma: -6
Deconectat Deconectat

Mesaje: 26



Vezi Profilul
« Răspunde #13 : Februarie 18, 2006, 16:47:25 »

:cry: Am si eu niste intrebari.
Stau de doua zile la problema asta si am luat numa 30 de puncte.
Eu iau fiecare joc si simulez toate posibilaitatile de a juca si in functie de cine castiga am doua variabile pt fiecare jucator pe care le cresc. Daca nr de castiguri pt Paftenie e mai mare sau egal cu cel al secundului ii dau banii.
Am luat cateva teste pe care am calculat si imi da, dar evaluatorul imi da WA.
Tin cont si de faptul ca un unu poate trece si peste altii.
Imi mai da si mie cineva vreo indicatie sau vreo doua teste mai mari si reziltatu sa vad daca imi da corect. Nu teste oficiale.
Daca se poate si un test oficial mia-r fi de folos sa vad ce am gresit(testul 4 sau 5).
Multumes anticipat! Embarassed  Embarassed
Si ar mai fi un lucru: ce inseamna memoizare?
Memorat
alberte
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 11



Vezi Profilul WWW
« Răspunde #14 : Februarie 22, 2006, 18:12:51 »

Am facut un program cu preprocesare care nu vrea sa-mi intre in timp. Pe computerul meu (P4 2,4 GHz Win XP) imi face in 3 secunde preprocesarea si in 3 sec citirea datelor (pentru 100000 de jocuri)- cronometrate separat, pur si simplu nu se incadreza in timp.
Stie cineva ce ar trebui sa fac ca sa mi se incadreze? (repet: simpla citire a datelor dureaza 3 sec).
Memorat
Marius
Nu mai tace
*****

Karma: 154
Deconectat Deconectat

Mesaje: 572



Vezi Profilul
« Răspunde #15 : Februarie 22, 2006, 19:39:39 »

Daca folosesti C++, atunci incearca sa faci citirea datelor in stil C, cu fscanf... Poate o sa iei 100 fara fstream...   Smile
Memorat

Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
alberte
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 11



Vezi Profilul WWW
« Răspunde #16 : Februarie 22, 2006, 19:51:17 »

Eu lucrez in pascal (Este mai incet?), cred ca o sa incerc si o solutie in c cu scanf, daca asta e singura solutie sa-mi intre in timp...
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #17 : Februarie 22, 2006, 22:24:33 »

si eu am avut probleme cu incadrarea in timp, insa nu din cauza ca foloseam pascal.

eu nu faceam preprocesarea aia ca lumea. gandeste-te daca nu ai putea sa imbunatatesti ceva la ea. Wink
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
andreit1
Vizitator
« Răspunde #18 : Februarie 24, 2006, 21:50:42 »

Alberte stai linistit ca intra si in pascal( 1.5 secunde in cel mai rau caz). Foloseste operatori pe biti ca sa imbunatatesti constanta( sau poate chiar complexitatea).
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #19 : August 09, 2006, 18:32:24 »

faptul ca secundul joaca optim inseamna ca dak exista cel putin o posibilitate ca secundul sa castige atunci acesta va castiga?? sau numarul de posibilitati ca paftenie sa castige tre sa fie mai mic decat cele ale secundului ptr ca cel din urma sa castige??

PS: iau 10 pt si nu inteleg, teoretic dak secundul joaca optim atunci dak exista cel putin o posibilitate ca acesta sa castige atunci el va castiga.
Memorat
Marius
Nu mai tace
*****

Karma: 154
Deconectat Deconectat

Mesaje: 572



Vezi Profilul
« Răspunde #20 : August 10, 2006, 12:17:35 »

Citeste putin despre functia Sprague - Grundy! Te va lamuri imediat!  Smile
Memorat

Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
tm_radu
De-al casei
***

Karma: 16
Deconectat Deconectat

Mesaje: 140



Vezi Profilul
« Răspunde #21 : Martie 25, 2008, 20:50:06 »

Pe testul :
Cod:
10
1 1 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 1 0
0 1 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1
1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 0 0 1 0 0 0 0
0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0
1 0 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 0 1 0
1 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 0 1 0 0 0
1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0
1 0 0 1 0 1 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 1
0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 1 0 1 1 1 0 1
1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 1 1 1

raspunsul este 90?
Memorat

Daca nu merge o preblema, depaneaz-o, si abia apoi arunci calculatoru pe geam
gabitzish1
Moderatori infoarena
Nu mai tace
*****

Karma: 321
Deconectat Deconectat

Mesaje: 926



Vezi Profilul
« Răspunde #22 : Martie 25, 2008, 20:53:48 »

Mie imi da 111.
Memorat
Pepelea_Flaviu
Client obisnuit
**

Karma: 30
Deconectat Deconectat

Mesaje: 98



Vezi Profilul
« Răspunde #23 : Decembrie 23, 2008, 11:45:08 »

Citat
secundul joaca intotdeauna optim
Primul nu joaca optim si el ?
Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #24 : Decembrie 23, 2008, 13:08:18 »

Daca intrebarea nu era o glumita, atunci gandeste-te ca primul esti tu si vrei sa castigi. Daca nu joci optim, exista posibilitatea sa nu castigi.
Memorat
Pagini: [1] 2   În sus
  Imprimă  
 
Schimbă forumul:  

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