infoarena

infoarena - concursuri, probleme, evaluator, articole => Algoritmiada 2013 => Subiect creat de: Serban Andrei Stan din Februarie 24, 2013, 01:27:47



Titlul: Kgon
Scris de: Serban Andrei Stan din Februarie 24, 2013, 01:27:47
Aici se pot pune întrebări legate de problema Kgon de la Runda 3 a concursului Algoritmiada 2013.

Timpul alocat întrebărilor este de 1 ora dupa inceperea concursului. Întrebările vor fi formulate astfel încât să se poată răspunde cu DA sau NU. În caz contrar sau în cazul în care întrebarea își găsește răspuns în enunțul problemei, răspunsul va fi FARA COMENTARII.


Titlul: Răspuns: Kgon
Scris de: Rares Buhai din Februarie 24, 2013, 09:03:54
Cercul are centrul in (0, 0)?


Titlul: Răspuns: Kgon
Scris de: Marin Tiberiu din Februarie 24, 2013, 09:08:36
Distantele pot fi mai mari decat circumferinta cercului?


Titlul: Răspuns: Kgon
Scris de: Marian Darius din Februarie 24, 2013, 09:09:54
Daca sunt 2 puncte la aceeasi distanta de (0,R), care il consideram?


Titlul: Răspuns: Kgon
Scris de: Radu-Andrei Szasz din Februarie 24, 2013, 09:13:58
Punctele sunt sortate?

LE: Pot exista 2 pct cu aceleasi coordonate?


Titlul: Răspuns: Kgon
Scris de: Adrian Budau din Februarie 24, 2013, 09:15:11
@darren DA
@tibi9874 NU
@dariusdarius Nu pot fi 2 puncte la aceeasi distanta
@repp4radu NU


Titlul: Răspuns: Kgon
Scris de: Rares Buhai din Februarie 24, 2013, 09:18:25
Distanta de la punctul (0, R) la punctul (-R, 0) se considera aceeasi cu cea de la (0, R) la (R, 0)?


Titlul: Răspuns: Kgon
Scris de: Bratie Fanut din Februarie 24, 2013, 09:20:14
prin subset intelegem submultime?


Titlul: Răspuns: Kgon
Scris de: Mihai Calancea din Februarie 24, 2013, 09:21:33
DA.


Titlul: Răspuns: Kgon
Scris de: Adrian Budau din Februarie 24, 2013, 09:23:07
@darre NU. Distantele sunt date plecand din punctul (0, R) si mergand in jurul acelor de ceasornic.


Titlul: Răspuns: Kgon
Scris de: Adrian Budau din Februarie 24, 2013, 09:26:38
Citeste enuntul si raspunsul de mai sus pentru @darren


Titlul: Răspuns: Kgon
Scris de: Gavrila Vlad din Februarie 24, 2013, 09:27:06
Pot exista doua puncte intre care sa existe o distanta mai mica de 2 * 10^-5?


Titlul: Răspuns: Kgon
Scris de: Cosmin Rusu din Februarie 24, 2013, 09:27:16
Distantele sunt sortate in fisierul de intrare?


Titlul: Răspuns: Kgon
Scris de: Gavrila Vlad din Februarie 24, 2013, 09:34:14
Pot exista doua subseturi in solutie care sa difere prin mai putin de K elemente, din cauza preciziei? (daca nu ar exista probleme de precizie asta n-ar trebui sa se intample)


Titlul: Răspuns: Kgon
Scris de: Adrian Budau din Februarie 24, 2013, 09:35:08
@Gavrila Vlad
Nu pot exista astfel de 2 puncte. Asteapta sa ti se raspunda la o intrebare, nu o pune din nou in speranta ca o sa ti se raspunda mai repede
@Cosmin Rusu
Citeste raspunsurile de mai sus.


Titlul: Răspuns: Kgon
Scris de: Daian Dragos din Februarie 24, 2013, 09:38:48
Se poate afla un punct in interiorul cercului ?
Punctele se afla doar pe cercul de raza R(nu e specificat clar cine e R)?


Titlul: Răspuns: Kgon
Scris de: Adrian Budau din Februarie 24, 2013, 09:40:29
R e un numar pe care il citesti din fisierul de intrare. Intrucat tie ti se dau distante pe circumefrinta cercului C((0, 0), R) nu ai cum sa  ai puncte in interior.


Titlul: Răspuns: Kgon
Scris de: Gavrila Vlad din Februarie 24, 2013, 09:41:16
Am reformulat intrebarea ca sa se vada din ce cauza o pun, ca sa nu se poata interpreta ca cer informatii despre particularitati ale testelor.


Titlul: Răspuns: Kgon
Scris de: Darius-Florentin Neatu din Februarie 24, 2013, 09:46:50
repp4radu a pus mai sus 2 intrebari si i-ai raspuns cu NU

Punctele sunt sortate?
LE: Pot exista 2 pct cu aceleasi coordonate?

nu pentru amandoua?


Titlul: Răspuns: Kgon
Scris de: Adrian Budau din Februarie 24, 2013, 09:49:48
I-am raspunsul lui @dariusdarius ca nu pot exista 2 puncte in acelasi loc deci nu i-as fi raspuns si lui @repp4radu acelasi lucru.
NU se garanteaza ca punctele sunt date sortate.


Titlul: Răspuns: Kgon
Scris de: Daian Dragos din Februarie 24, 2013, 10:13:05
Daca raza cercului e 10 si distanta de la (0,10) e 41 inseamna ca punctele ar trebui sa fie: (http://www.quickmath.com/webMathematica3/quickmath/equations/solve/advanced.jsp#c=solve_advancedsolveequations&v1=x%5E2+%2B+y%5E2+%2B+100+-+20y%3D1681&v2=x%0Ay&v3=1)
x = t1
y = sqrt(1681 - t1^2) + 10

sau

x = t1
y = -sqrt(1681 - t1^2) + 10

Daca luam t1 sa zicem 10(ca as nu depaseasca cercul) x = 10 si y = 49, punct ce nu se afla in cerc.


Titlul: Răspuns: Kgon
Scris de: Alex Velea din Februarie 24, 2013, 10:17:02
E formulate un pic dubios problema, Dragos.
Citeste cu atentie ce i-a raspuns Budau Adrian lui Rares Buhai ... ( @freak93 -> @darren )

Intrebare:
Numerele sunt date cu mai mult de 5 zecimale in teste?


Titlul: Răspuns: Kgon
Scris de: Buleandra Cristian din Februarie 24, 2013, 10:19:01
Daca raza cercului e 10 si distanta de la (0,10) e 41 inseamna ca punctele ar trebui sa fie: (http://www.quickmath.com/webMathematica3/quickmath/equations/solve/advanced.jsp#c=solve_advancedsolveequations&v1=x%5E2+%2B+y%5E2+%2B+100+-+20y%3D1681&v2=x%0Ay&v3=1)
x = t1
y = sqrt(1681 - t1^2) + 10

sau

x = t1
y = -sqrt(1681 - t1^2) + 10

Daca luam t1 sa zicem 10(ca as nu depaseasca cercul) x = 10 si y = 49, punct ce nu se afla in cerc.

"Distantele sunt date plecand din punctul (0, R) si mergand in jurul acelor de ceasornic."


Titlul: Răspuns: Kgon
Scris de: Adrian Budau din Februarie 24, 2013, 10:21:50
@Alex Velea
DA.


Titlul: Răspuns: Kgon
Scris de: Stefan Eniceicu din Februarie 24, 2013, 10:23:31
Datorita inputului de forma distante, n-ar putea sa existe 2 posibilitati de asezare a primului punct (sub axa si deasupra axei, simetric) in partea stanga? Daca da, pe care il luam?


Titlul: Răspuns: Kgon
Scris de: Adrian Budau din Februarie 24, 2013, 10:37:53
Citeste toate intrebarile si raspunsurile si enuntul.


Titlul: Răspuns: Kgon
Scris de: Mihai Ionut Enache din Februarie 24, 2013, 10:40:39
Di este intotdeauna mai mic decat 2*Pi*R?


Titlul: Răspuns: Kgon
Scris de: Vlad Costin din Februarie 24, 2013, 10:57:39
Pentru precizie, ce valoare sugerati sa-i dam lui pi ? (Nu stiu daca puteti sa raspundeti la asta, dar cred ca ar ajuta ) .


Titlul: Răspuns: Kgon
Scris de: Alex Velea din Februarie 24, 2013, 10:58:06
2 numere se considera egale daca abs( a-b ) < 10-5?


Titlul: Răspuns: Kgon
Scris de: Adrian Budau din Februarie 24, 2013, 10:59:28
@Mihai Ionut Enache DA
@Vlad Costin In biblioteca cmath(sau math.h) se gaseste predefinit pi. Este "M_PI"(ghilimelele sunt doar pentru claritate)
@Alex Velea DA


Titlul: Răspuns: Kgon
Scris de: Vlad Costin din Februarie 24, 2013, 11:04:35
@Mihai Ionut Enache DA
@Vlad Costin In biblioteca cmath(sau math.h) se gaseste predefinit pi. Este "M_PI"(ghilimelele sunt doar pentru claritate)
@Alex Velea DA


Mersi mult. Asta a rezolvat tot.


Titlul: Răspuns: Kgon
Scris de: Dan H Alexandru din Februarie 24, 2013, 13:06:39
Se putea mai bine de N lg N ?  :?


Titlul: Răspuns: Kgon
Scris de: Pirtoaca George Sebastian din Februarie 24, 2013, 13:07:00
Cum ati reusit sa scapati de TLE? Eu am rezolvat-o in O(n) cu hashuri?  :)


Titlul: Răspuns: Kgon
Scris de: Dan H Alexandru din Februarie 24, 2013, 13:09:36
Cum ati reusit sa scapati de TLE? Eu am rezolvat-o in O(n) cu hashuri?  :)

Poti sa imi detaliezi putin aici sau pe privat ? Am impresia ca puntele trebuiau sortate. Multumesc anticipat.  :)


Titlul: Răspuns: Kgon
Scris de: Visan Radu din Februarie 24, 2013, 13:10:07
Eu am luat OK pe testul 7 cu 104 ms, complexitate O(N log N + N). Am sortat si m-am plimbat cu 2 pointeri :)


Titlul: Răspuns: Kgon
Scris de: Pirtoaca George Sebastian din Februarie 24, 2013, 13:12:21
Am gasit L = PI * R * 2 / k, apoi bagam toate punctele intr-un hash. Adaugam L la punctul de start, pana cand gaseam k puncte sau pana gaseam un punct care nu exista. Daca depaseam circumferinta cercului, o scadeam din distanta curenta.
Aveam 132 ms daca faceam doar citirea.  :)


Titlul: Răspuns: Kgon
Scris de: Puscas Sergiu din Februarie 24, 2013, 13:13:46
Eu am scos o(n log n) cu o sortare si cautare binara a termenilor ce fac parte din progresii aritmetice cu ratia (2*pi*r / k). Pe testul 7 am 148ms. Se poate demonstra corectitudinea solutiei in o(n)?


Titlul: Răspuns: Kgon
Scris de: Dan H Alexandru din Februarie 24, 2013, 13:16:37
Eu am scos o(n log n) cu o sortare si cautare binara a termenilor ce fac parte din progresii aritmetice cu ratia (2*pi*r / k). Pe testul 7 am 148ms. Se poate demonstra corectitudinea solutiei in o(n)?

Idem , doar ca am TLE :)).

@ SebiSebi : Ce functie de hashing ai folosit ?

LE : Ma refer la faptul ca aveai de retinut double-uri.


Titlul: Răspuns: Kgon
Scris de: Vlad Tarniceru din Februarie 24, 2013, 13:18:09
@ SebiSebi : Ce functie de hashing ai folosit ?

LE : Ma refer la faptul ca aveai de retinut double-uri.

Puteai inmulti numerele double cu 10^7, astfel ti le tineai long long-uri


Titlul: Răspuns: Kgon
Scris de: Pirtoaca George Sebastian din Februarie 24, 2013, 13:19:06
Am incercat 3 modalitati , insa fara succes. Am pastrat hashing-ul pentru numere reale (cel cu partea fractionala), folsind constanta propusa de Knuth si modulo 10007.


Titlul: Răspuns: Kgon
Scris de: Vlad Tarniceru din Februarie 24, 2013, 13:21:04
Am incercat 3 modalitati , insa fara succes. Am pastrat hashing-ul pentru numere reale( cel cu partea fractionala) , folsind constanta propusa de Knuth si modulo 10007.

Eu tot nu prea vad cum cu hash.. tot trebuiau sortate numerele pana la urma :|
Daca ai ceva de genul:

Cod:
3
1
2

(astea sunt distantele, "sa presupunem" ca se poate),
atunci ce faci?


Titlul: Răspuns: Kgon
Scris de: Dan H Alexandru din Februarie 24, 2013, 13:25:34
@ Vlad: Poi de la un punct se poate ajunge adugand la unul din set sau se poate iesi din set. Marchezi punctele cand mergi , si nu mai ai de la parcurs din nou. Cred ca ar merge.  ???


Titlul: Răspuns: Kgon
Scris de: Stefan Eniceicu din Februarie 24, 2013, 13:27:03
Cum ati facut sa intre precizia? Am incercat mai multe modalitati (toate cu cautare binara) pe int si pe reale, cu precizia -5, -6, dar nu mi-a intrat...


Titlul: Răspuns: Kgon
Scris de: Pirtoaca George Sebastian din Februarie 24, 2013, 13:28:02
Sper ca am inteles ce vrei sa spui. Daca aveam exemplul din enunt , dar in alta ordine :
Cod:
5 3 10.000000
41.887902
0.000000
12.978671
38.111412
20.943951
l = 20.943951
L = 62.83185
Plecam din primul punct, deoarece pe el nu l-am mai "vizitat" pana acum.
Caut punctul 41.887902 + l=62.83185 , care este egal cu circumferinta cercului, deci scad L - > punctul devine 0.
Caut punctul 0 + l = 20.943951, il gasesc -> am gasit trei puncte care formeaza un triunghi echilateral.
Eu am considerat ca nu conteaza ordinea punctelor.


Titlul: Răspuns: Kgon
Scris de: Vlad Tarniceru din Februarie 24, 2013, 13:28:32
Steve: Eu am facut cu eps 0.000001 si mi-a mers....
Dan Alex: Stai putin, tu la ce te referi cu set? Ala din "#include <set>" ? Daca da, ala e logn (mai mult de fapt).. si nu mai iese o(n) solutia :-?


Titlul: Răspuns: Kgon
Scris de: Dan H Alexandru din Februarie 24, 2013, 13:40:04
@ Vlad: Nu set din STL. La puntele din hash. Graba...

LE: Sebi , cred ca e bun rationamentul.


Titlul: Răspuns: Kgon
Scris de: Pirtoaca George Sebastian din Februarie 24, 2013, 13:44:20
@ Vlad: Nu set din STL. La puntele din hash. Graba...

LE: Sebi , cred ca e bun rationamentul.

Da, este bun, am luat 40 de puncte cu complexitatea O(n). O sa inlociuesc hash-ul cu o sortare + cautare binara, sa vad cat iau.  :) 


Titlul: Răspuns: Kgon
Scris de: Visan Radu din Februarie 24, 2013, 13:45:47
Se poate lua 100 cu sortare + cautare binara, dar si cu sortare + O(N)  :)


Titlul: Răspuns: Kgon
Scris de: Pirtoaca George Sebastian din Februarie 24, 2013, 13:46:45
Se poate lua 100 cu sortare + cautare binara, dar si cu sortare + O(N)  :)
OK. Nu ma asteptam sa mearga asa de prost hash-ul, dar se mai intampla.


Titlul: Răspuns: Kgon
Scris de: Vlad Tarniceru din Februarie 24, 2013, 14:22:22
E buna ideea intr-adevar ... bravo :)
Oricum, cred ca modulo-urile alea mananca o droaie de-a timp (cred ca de la asta ai atatea TLE-uri) :-?