Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 209 Sir : Martie 07, 2016, 22:06:57
Asta e pentru ca tu transmiti prin valoare un obiect de tip deque de fiecare data cand apelezi functia. Practic copiezi tot deque-ul care il ai intr-un nou deque de fiecare data cand apelezi. Incearca sa transmiti doar adresa (adica prin referinta) si ai sa vezi ca o sa mearga rapid.
2  infoarena - concursuri, probleme, evaluator, articole / PreOJI 2016 / Răspuns: Qxy : Martie 05, 2016, 19:02:39
Nu este necesara parsarea daca rezolvi problema in (N + M) log VALMAX si folosesti arbori indexati binar.
3  infoarena - concursuri, probleme, evaluator, articole / Infoarena Monthly 2014 / Răspuns: Infoarena Monthly 2014, Runda 7 : 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.
4  infoarena - concursuri, probleme, evaluator, articole / Infoarena Monthly 2014 / Răspuns: Infoarena Monthly 2014, Runda 7 : 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).
5  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Un semn in pseudocod : Noiembrie 08, 2013, 19:32:54
Poti baga #include<algorithm> si sa folosesti swap(a,b);

Sau poti sa faci clasic:
Cod:
int aux,a,b; aux=a; a=b; b=aux;
6  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 074 Heroes of Might & Magic : August 19, 2013, 02:11:36
http://www.infoarena.ro/agora-finala/solutii
7  infoarena - concursuri, probleme, evaluator, articole / Arhiva Infoarena Monthly / Răspuns: 000 Paranteze2 : Ianuarie 28, 2013, 23:29:33
Incearca sa pui solutia pe long long. Mie asa mi-a mers ultimul test. Bafta !
8  infoarena - concursuri, probleme, evaluator, articole / Algoritmiada 2013 / Răspuns: Queue : Ianuarie 20, 2013, 20:28:22
Cum pot sa afisez cat mai rapid instructiunile?
Daca afisez cu printf("text") iau tle.

LE: TLE-ul nu era de la afisare, ci de la algoritm. Am schimbat metoda de rezolvare si acum iau 100 puncte.
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines