Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Infoarena Monthly 2014, Runda 7  (Citit de 11245 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Teodor94
Echipa infoarena
Nu mai tace
*****

Karma: 63
Deconectat Deconectat

Mesaje: 558



Vezi Profilul
« : Iulie 30, 2014, 09:13:12 »

Runda 7 va avea loc Joi, 31 iulie la ora 1900.
Va uram mult succes!  Winner 1st place
Memorat
scipianus
Nu mai tace
*****

Karma: 129
Deconectat Deconectat

Mesaje: 345



Vezi Profilul
« Răspunde #1 : Iulie 30, 2014, 13:36:37 »

Ce bine s-a nimerit, la ora aia sunt pe drumul din Bulgaria spre casa  d'oh!
Memorat
narcis_vs
Strain
*

Karma: 19
Deconectat Deconectat

Mesaje: 34



Vezi Profilul
« Răspunde #2 : Iulie 30, 2014, 14:13:15 »

Bancul zilei : " ATENTIE! Trebuie sa te inscrii inainte de ora 19:00 daca doresti sa ti se modifice rating-ul in urma participarii! " - Infoarena, 2014.
Memorat
SebiSebi
Nu mai tace
*****

Karma: 76
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #3 : Iulie 31, 2014, 20:35:13 »

Felicitări pentru rundă!  Applause
A fost una dintre cele mai frumoase runde de Monthly la care am participat. Ar fi fost super dacă am fi avut putin mai mult timp la dispoziție.
Memorat
Andrei1998
De-al casei
***

Karma: 26
Deconectat Deconectat

Mesaje: 112



Vezi Profilul
« Răspunde #4 : Iulie 31, 2014, 20:41:33 »

Felicitari pentru runda, foarte reusita Thumb up.  Problema 1 era cum trebuie sa fie prima - simpla si "ok", sa nu fie plina de cazuri particulare. A doua a fost parca prea mult mate (trebuia sa stii putin despre teorema lui Bezout + Euclid extins + ecuatii pell ca sa o faci, poate m-am complicat, dar oricum demonstratia solutiei e destul de matematica). Rog sa puneti problemele in arhiva cat de curand (vreau sa vad daca CE-ul din ultima secunda la problema 2 era de 100). A treia a fost cam "scarboasa" adica ideea iti venea imediat dar trebuia sa fii foarte dibace sa nu gresesti nimic. Ultima ma duce cu gandul la FFT (nu m-am gandit mult prea mult la ea). Felicitari autorilor + tuturor celor care au participat la crearea si desfasurarea rundei.

P.S. : "Rating is a lie." (ca raspuns la cea a zis Narcis mai sus, mi-a luat ceva sa ma prind dar a meritat Smile ).
Memorat
ctlin04
Nu mai tace
*****

Karma: 23
Deconectat Deconectat

Mesaje: 207



Vezi Profilul
« Răspunde #5 : Iulie 31, 2014, 20:53:51 »

Cum se face problema 1 ca nu am avut nici o idee la ea (poate doar suma^n) dar nu am implementat??  Confused
Cit despre problema 3 mi s-a parut destul de draguta, cel putin mie mi s-a parut cea mai usoara.  Smile
Memorat
GavrilaVlad
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 222



Vezi Profilul
« Răspunde #6 : Iulie 31, 2014, 21:05:46 »

Mai citesc gresit enuntul si in loc de "fiecare are voie sa aleaga doar o felie adiacenta cu portiunea de pizza deja extrasa" inteleg "fiecare are voie sa aleaga doar o felie din marginea intervalului ramas"  Aha Spre apararea mea, ma asteptam ca a treia problema sa fie ceva mai dificila.

Oricum, felicitari pentru runda - problemele au fost tare simpatice, in special ultima. Eu am facut O(N*sqrt(N)*K) cu hash-uri si impartind sirul A in bucati de radical. Care era solutia oficiala?
Memorat
Andrei1998
De-al casei
***

Karma: 26
Deconectat Deconectat

Mesaje: 112



Vezi Profilul
« Răspunde #7 : Iulie 31, 2014, 21:07:18 »

La prima problema formula chiar era Suma^n.
Iata de ce:
Sa zicem ca avem cele n cutii: x1 x2 ... xn
Acum incercam sa enumeram toate produsele necesare: (fie a1 ... am cele m numere distincte)
a1 * a1 * ... * a1 (de n ori)
a1 * a1 * ... * a2 (de n ori)
...
a1 * a1 * ... * a2 * a1 (de n ori)

Altfel scris (notam cu S(i,a,b) sigma dupa i ia valori de la a la b):
S(i,1,m) S(j,1,m) S(k,1,m) * ... * S(p,1,m) [ai*aj*ak* ... * ap] (n sigme)
Si cum sigma produsului e produs de sigme, ajungem la formula (Suma totala)^n

Pot sa detaliez daca e cineva interesat.
Memorat
vendetta
De-al casei
***

Karma: 72
Deconectat Deconectat

Mesaje: 122



Vezi Profilul
« Răspunde #8 : Iulie 31, 2014, 21:18:01 »

Partial match se mai poate face si cu suffix array. Sa zicem ca esti la pozitia i in A si la pozitia j in B vrei sa afli cate caractere sunt la fel. Poti afla folosindu-te de suffix array.
Memorat
ctlin04
Nu mai tace
*****

Karma: 23
Deconectat Deconectat

Mesaje: 207



Vezi Profilul
« Răspunde #9 : Iulie 31, 2014, 21:21:45 »

Mda  Mad, mai bine implementam, am intuit formula dar nu stiam cum se demonstreaza si am crezut ca e doar o parere gresita care merge doar pe exemplu, in fine mersi pentru explicatie si daca ai mai detalia un pic demonstratia cred ca ar fi foarte ok, sau poate o sa fie o demonstratie completa in articolul cu solutii oficiale.
Memorat
maritim
Vorbaret
****

Karma: 59
Deconectat Deconectat

Mesaje: 176



Vezi Profilul
« Răspunde #10 : Iulie 31, 2014, 21:35:05 »

Problema Partial Match se putea rezolva si cu cautare binara folosind aceeasi idee pe care ai expus-o tu Vlad Smile . Se cautau binar pentru fiecare subsecventa posibila cele K (maxim) puncte de nepotrivire folosind algoritmul lui Rabin-Karp Smile. Mai existau si alte solutii, una dintre ele a fost expusa de Razvan.

Revenind la desfasurarea rundei, ne cerem scuze pentru aprecierea gresita a dificultatii problemelor. Intradevar primele doua probleme au fost putin mai grele decat ar fi trebuit, iar a treia a fost mai usoara decat trebuia sa fie o problema de nivel 3 pe rang de dificultate.

Multumim pentru feedback-ul constructiv si o sa incercam pe viitor sa apreciem intr-un mod mai corect dificultatea problemelor Smile .
Memorat
heisenberg
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #11 : Iulie 31, 2014, 21:46:36 »

Si la antobroasca care era solutia oficiala? Intreb pentru ca in solutia mea, care implica rezolvarea a doua ecuatii cu algoritmul lui euclid extins, aveam probleme cu anumite numere intermediare care se pare ca ieseau din long long.  Confused
Memorat
maritim
Vorbaret
****

Karma: 59
Deconectat Deconectat

Mesaje: 176



Vezi Profilul
« Răspunde #12 : Iulie 31, 2014, 22:08:16 »

Rezolvarea problemei Antobroasca se reducea la a raspunde daca urmatorul sistem de ecuatii are solutii

  • Zc + Xa = A
  • Zc + Yb = B

cu precizarea ca sunt 3 necunoscute (a, b, c). Pentru a nu avea un sistem in care ai 3 necunoscute si 2 ecuatii vom incerca sa obtinem o a treia ecuatie scazand prima ecuatie din a doua

  • Yb - Xa = B-A

Ca raspunsul sa fie afirmativ la intrebarea problemei trebuie ca fiecare din aceste 3 ecuatii sa aiba solutii in Z.

Pentru a verifica daca o ecuatie de forma ax + by = c accepta solutii in Z pentru x si y este suficient sa verifici daca c este divizibil cu cmmdc(a,b) . Aceasta este solutia oficiala a problemei.
« Ultima modificare: Iulie 31, 2014, 22:13:45 de către Cristian Lambru » Memorat
szili
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 5



Vezi Profilul
« Răspunde #13 : Iulie 31, 2014, 22:44:05 »

La prima problema eu m-am gandit in felul urmator: In fiecare pozitie trebuie sa avem unul din cele m numere. Un numar oarecare X pe pozitia aia o sa apara de M^(N-1) ori pentru ca pe ficeare din celelalte pozitii pot sa pun orice. Asta ii adevarat pentru fiecare numar => pentru suma de pe o pozitie avem SUM *N^(M-1). Din cauza ca avem N pozitii in total, formula va fi: N * SUM * N^(M-1). (SUM -reprezinta suma tuturor numerelor) Ma puteti ajuta va rog ce gresesc in formula aceasta si la cum am ajuns la ea? Trec 2 teste dar celelalte nu.
Memorat
poptibi
Strain
*

Karma: 35
Deconectat Deconectat

Mesaje: 25



Vezi Profilul
« Răspunde #14 : Iulie 31, 2014, 22:47:47 »

Rezolvarea problemei Antobroasca se reducea la a raspunde daca urmatorul sistem de ecuatii are solutii

  • Zc + Xa = A
  • Zc + Yb = B

cu precizarea ca sunt 3 necunoscute (a, b, c). Pentru a nu avea un sistem in care ai 3 necunoscute si 2 ecuatii vom incerca sa obtinem o a treia ecuatie scazand prima ecuatie din a doua

  • Yb - Xa = B-A

Ca raspunsul sa fie afirmativ la intrebarea problemei trebuie ca fiecare din aceste 3 ecuatii sa aiba solutii in Z.

Pentru a verifica daca o ecuatie de forma ax + by = c accepta solutii in Z pentru x si y este suficient sa verifici daca c este divizibil cu cmmdc(a,b) . Aceasta este solutia oficiala a problemei.

De ce daca cele 3 ecuatii au solutii in Z, inseamna ca tot sistemul are cel putin o solutie?
Memorat
Zenus
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #15 : Iulie 31, 2014, 23:03:23 »

Deci eu m-am gandit la problema antobroasca ca daca modul(A) divide cmmdc(x,z) si modul(B) divide cmmdc(y,z) atunci DA.. altfel NU. Imi puteti da un contraexemplu pentru ideea asta ?  Think
Memorat
narcis_vs
Strain
*

Karma: 19
Deconectat Deconectat

Mesaje: 34



Vezi Profilul
« Răspunde #16 : August 01, 2014, 10:15:30 »

La rundele 6 si 7 primele 2 probleme se faceau cu formula. La runda 8 se vor da 3 probleme care se rezolva cu formula sau e ok ca la un concurs de info jumatate din setul de probleme sa se rezolve cu formule?
Memorat
SRadu
Client obisnuit
**

Karma: 31
Deconectat Deconectat

Mesaje: 74



Vezi Profilul
« Răspunde #17 : August 01, 2014, 12:21:10 »

Exista o demonstratie riguroasa pentru problema a 2-a de ce daca toate alea au solutie in Z atunci exista solutie pentru intregul sistem?

Eu am incercat o rezolvare cu algoritmul lui Euclid extins care lua WA din cauza unui overflow banuiesc. Mi se pare ca trebuiau limitele alese astfel incat si aceasta rezolvare sa ia 100 de puncte.

PS Vrem articol cu solutiile  Very Happy
« Ultima modificare: August 01, 2014, 12:41:49 de către Radu Szasz » Memorat
Al3ks1002
Strain


Karma: 5
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #18 : August 01, 2014, 13:01:02 »

Solutia mea pentru problema a doua este urmatoarea:

Mai intai facem sistemul:

A = a*X + b1*Z
B = c*Y + b2*Z


Aplicam algoritmul lui Euclid extins pentru ambele ecuatii si obtinem niste valori pentru a,b1,b2,c.
Acum, pentru a afisa "DA" trebuie sa vedem daca b1 poate fi egal cu b2.

Ambele ecuatii au o infinitate de solutii, deci sistemul devine:

A = (a + k1*Z/d1)*X + (b1 - k1*X/d1)*Z
B = (c + k2*Z/d2)*Y + (b2 - k2*Y/d2)*Z,

unde d1=cmmdc(X,Z), d2=cmmdc(Y,Z) si k1,k2 intregi.

Punem conditia ca b1 - k1*X/d1 = b2 - k2*Y/d2.
Notand F=X/d1 si G=Y/d2 ajungem la:

b1 - k1*F = b2 - k2*G <=>
<=> b1 - b2 = k1*F - k2*G


Aplicam algoritmul lui Euclid extins pe aceasta ecuatie.
Daca gasim solutie cu k1,k2 intregi, atunci afisam "DA".

Facand toate calculele pe long long, mi-a intrat solutia asta de 100p (dupa concurs).
« Ultima modificare: August 01, 2014, 13:21:50 de către Alex Cociorva » Memorat
Impaler_009
Client obisnuit
**

Karma: 23
Deconectat Deconectat

Mesaje: 59



Vezi Profilul
« Răspunde #19 : August 01, 2014, 13:24:54 »

Solutia mea pentru problema a doua este urmatoarea:

Mai intai facem sistemul:
A = a*X + b1*Z
B = c*Y + b2*Z

Aplicam algoritmul lui Euclid extins pentru ambele ecuatii si obtinem niste valori pentru a,b1,b2,c.
Acum, pentru a afisa "DA" trebuie sa vedem daca b1 poate fi egal cu b2.

Ambele ecuatii au o infinitate de solutii, deci sistemul devine:
A = (a + k1*Z/d1)*X + (b1 - k1*X/d1)*Z
B = (c + k2*Z/d2)*Y + (b2 - k2*Y/d2)*Z,
unde d1=cmmdc(X,Z), d2=cmmdc(Y,Z) si k1,k2 intregi.

Punem conditia ca b1 - k1*X/d1 = b2 - k2*Y/d2.
Notand F=X/d1 si G=Y/d2 ajungem la:

b1 - k1*F = b2 - k2*G <=>
<=> b1 - b2 = k1*F - k2*G

Aplicam algoritmul lui Euclid extins pe aceasta ecuatie.
Daca gasim solutie cu k1,k2 intregi, atunci afisam "DA".

Facand toate calculele pe long long, mi-a intrat solutia asta de 100p (dupa concurs).

Ca tine am rezolvat-o si eu. Este necesar insa sa demonstrezi ca toate solutiile posibile pentru b1 din aX + b1Z = c sunt de forma b1 (aflat din euclid extins) + r*X/cmmdc(X,Z) cu un r ales de tine.

Fie aX + bY = c cu a si b solutii.
Incercam sa variem solutia: (a+a0)X + (b+b0)Y = c (trebuie sa le variem pe ambele pentru ca ecuatia sa se pastreze)
=> a*X + a0*X + b*Y + b0*Y = c
   Scadem a*X + b*Y = c
=> a0*X + b0*Y = 0
=> a0*X = -b0*Y = r*cmmmc(X,Y)
=> a0 = r*cmmmc(X,Y)/X
=> a0 = r*X*Y/(cmmdc(X,Y)*X)
=> a0 = r*Y/cmmdc(X,Y)
deci orice solutie pentru a este de forma a + r*Y/cmmdc(X,Y)
Memorat
Al3ks1002
Strain


Karma: 5
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #20 : August 01, 2014, 13:32:12 »

Solutia mea pentru problema a doua este urmatoarea:

Mai intai facem sistemul:
A = a*X + b1*Z
B = c*Y + b2*Z

Aplicam algoritmul lui Euclid extins pentru ambele ecuatii si obtinem niste valori pentru a,b1,b2,c.
Acum, pentru a afisa "DA" trebuie sa vedem daca b1 poate fi egal cu b2.

Ambele ecuatii au o infinitate de solutii, deci sistemul devine:
A = (a + k1*Z/d1)*X + (b1 - k1*X/d1)*Z
B = (c + k2*Z/d2)*Y + (b2 - k2*Y/d2)*Z,
unde d1=cmmdc(X,Z), d2=cmmdc(Y,Z) si k1,k2 intregi.

Punem conditia ca b1 - k1*X/d1 = b2 - k2*Y/d2.
Notand F=X/d1 si G=Y/d2 ajungem la:

b1 - k1*F = b2 - k2*G <=>
<=> b1 - b2 = k1*F - k2*G

Aplicam algoritmul lui Euclid extins pe aceasta ecuatie.
Daca gasim solutie cu k1,k2 intregi, atunci afisam "DA".

Facand toate calculele pe long long, mi-a intrat solutia asta de 100p (dupa concurs).

Ca tine am rezolvat-o si eu. Este necesar insa sa demonstrezi ca toate solutiile posibile pentru b1 din aX + b1Z = c sunt de forma b1 (aflat din euclid extins) + r*X/cmmdc(X,Z) cu un r ales de tine.

Fie aX + bY = c cu a si b solutii.
Incercam sa variem solutia: (a+a0)X + (b+b0)Y = c (trebuie sa le variem pe ambele pentru ca ecuatia sa se pastreze)
=> a*X + a0*X + b*Y + b0*Y = c
   Scadem a*X + b*Y = c
=> a0*X + b0*Y = 0
=> a0*X = -b0*Y = r*cmmmc(X,Y)
=> a0 = r*cmmmc(X,Y)/X
=> a0 = r*X*Y/(cmmdc(X,Y)*X)
=> a0 = r*Y/cmmdc(X,Y)
deci orice solutie pentru a este de forma a + r*Y/cmmdc(X,Y)

Da, sau asta Very Happy (http://en.wikipedia.org/wiki/B%C3%A9zout's_identity#Structure_of_solutions), dar demonstratia e binevenita.
Memorat
SRadu
Client obisnuit
**

Karma: 31
Deconectat Deconectat

Mesaje: 74



Vezi Profilul
« Răspunde #21 : August 01, 2014, 13:44:20 »

Eu am pornit de la urmatoarele ecuatii:
X * H + Z * D = A
Y * V + Z * D = B

Dupa ce am facut o scadere am ajuns la:
X * H + (-Y) * V = A - B

Am facut Euclid extins pe chestia asta.
Fie H0 si V0 solutiile gasite.

H = H0 + K * (-Y) / d
V = V0 - K * X / d
Unde d = cmmdc(X, -Y)

Acum daca inlocuim intr-una din ecuatii o sa ne dea asa:
X * H0 + K * (X * (-Y) / d) + Z * D = A
X * H0 e constant si il putem trece in partea dreapta.
Notam T = X * (-Y) / d si ajungem la ecuatia
T * K + Z * D = A - X * H0

Aplicam din nou Euclid extins pe ecuatia asta si daca si asta are solutie afisam "DA", altfel "NU".
Memorat
DorelBarbu
Strain
*

Karma: 0
Deconectat Deconectat

Mesaje: 34



Vezi Profilul
« Răspunde #22 : August 28, 2014, 20:25:34 »

Am si eu o intrebare...unde dau click sa ma inregistrez pentru runda 8? Mi-am facut curaj sa particip dar nu m-am prins cum sa ma inscriu Very Happy
Memorat
Teodor94
Echipa infoarena
Nu mai tace
*****

Karma: 63
Deconectat Deconectat

Mesaje: 558



Vezi Profilul
« Răspunde #23 : August 28, 2014, 21:04:24 »

@Barbu Dorel

http://www.infoarena.ro/monthly-2014/runda-8/probleme

Click pe "Inscrie-te acum!", din chenarul galben. Va trebui sa dai din nou click pe "Confirma inscrierea" si asta ar trebui sa fie tot.

Multa bafta la runda 8!
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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