infoarena informatica de performanta
info
arena
b
log
f
orum
calendar
autentificare
inregistrare
infoarena
>
infoarena - concursuri, probleme, evaluator, articole
>
Informatica
> Subiect:
Problema interesanta triunghi dreptunghic
Pagini: [
1
]
În jos
« mesajul precedent
următorul mesaj »
Imprimă
Ajutor
Subiect: Problema interesanta triunghi dreptunghic (Citit de 2076 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
•
Doru_AC
Strain
Karma: 1
Deconectat
Mesaje: 10
Problema interesanta triunghi dreptunghic
«
:
Decembrie 17, 2011, 23:10:28 »
Salutare,
Sa presupunem ca avem N betisoare. Cum construiesc un algoritm mai eficient decat O(N^3) care determina daca printre cele N betisoare exista o combinatie de trei betisoare care formeaza un triunghi dreptunghic ?
Lungimea betisoarelor se presupune cunoscuta.
Multumesc
Memorat
•
MciprianM
Nu mai tace
Karma: 87
Deconectat
Mesaje: 324
Răspuns: Problema interesanta triunghi dreptunghic
«
Răspunde #1 :
Decembrie 17, 2011, 23:39:07 »
Poti sa sortezi betisoarele dupa lungimea lor, iei perechi de cate doua betisoare (sa zicem ca astea ar fi catetele) si pentru fiecare pereche, verifici daca exista un betisor cu lungimea egala cu lungimea ipotenuzei(lungimea ipotenuzei o determini cu teorema lui Pitagora). Verificarea o faci cautand binar lungimea catetei in sirul sortat de betisoare. Complexitate: O(n^2 logn).
Cu hashuri poti sa obtii un timp mediu de O(n^2).
Memorat
•
klamathix
Echipa infoarena
Nu mai tace
Karma: 733
Deconectat
Mesaje: 1.216
Răspuns: Problema interesanta triunghi dreptunghic
«
Răspunde #2 :
Decembrie 18, 2011, 00:31:25 »
Poti obtine O(n ^ 2) curat, worst-case. Ideea e ca pentru o cateta i fixata, cu cat cresti lungimea catetei j creste si ipotenuza, deci in loc sa faci cautare binara de fiecare data doar cresti un iterator care in total trece prin maxim toate n elemente.
Memorat
•
Doru_AC
Strain
Karma: 1
Deconectat
Mesaje: 10
Răspuns: Problema interesanta triunghi dreptunghic
«
Răspunde #3 :
Decembrie 18, 2011, 00:39:32 »
Foarte tare. Cum mai putin de O(n^2) nu se poate, e perfect. Multumesc
L.E. Am incercat sa o implementez in O(n^2) insa nu cred ca se poate fara cautare binara. Poti sa dai mai multe detalii in legatura cu iteratorul pe care il incrementez?
«
Ultima modificare: Decembrie 18, 2011, 02:03:23 de către Doru Gucea
»
Memorat
•
savim
Nu mai tace
Karma: 194
Deconectat
Mesaje: 333
Răspuns: Problema interesanta triunghi dreptunghic
«
Răspunde #4 :
Decembrie 18, 2011, 03:02:17 »
Uite mai explicit. Sortezi initial cele N valori in N log N.
Apoi, iti fixezi ipotenuza -> O(n).
Iti fixezi o cateta -> pana acum ai O(n^2).
A treia cateta stii cu cat este egala (stii ipotenuza si o cateta), deci ce ramane de facut este sa verifici daca valoarea se afla in sirul tau.
Poti face asta cautand binar in log N.
Dar - daca ai ipotenuza fixata, si valoarea primei catete creste, valoarea celei de-a doua catete va scadea.
Cu alte cuvinte, daca ai sirul X1 < X2 < .. < Xn, si presupunem ca ai gasit tripletul ipotenuza,cateta,cateta = Xi,Xj,Xk. Daca vei alege o cateta Xj+x, a doua cateta poate fi aleasa doar in stanga lui k, adica Xk-y. Ideea e sa-ti tii un pointer care initial arata spre cel mai mare element, si atata timp cat valoarea spre care pointeaza e mai mare decat ce ai tu nevoie, sa-l decrementezi. Iese O(N^2) per total, sper ca ai inteles.
«
Ultima modificare: Decembrie 18, 2011, 20:45:43 de către Serban Andrei Stan
»
Memorat
•
Doru_AC
Strain
Karma: 1
Deconectat
Mesaje: 10
Răspuns: Problema interesanta triunghi dreptunghic
«
Răspunde #5 :
Decembrie 18, 2011, 19:53:17 »
L-am implementat. Multumesc mult pentru explicatii.
Memorat
Pagini: [
1
]
În sus
Imprimă
infoarena
>
infoarena - concursuri, probleme, evaluator, articole
>
Informatica
> Subiect:
Problema interesanta triunghi dreptunghic
« mesajul precedent
următorul mesaj »
Schimbă forumul:
Selectează o destinaţie:
-----------------------------
infoarena - concursuri, probleme, evaluator, articole
-----------------------------
=> Concursuri
===> Junior Challenge 2025
===> Junior Challange 2023
===> Algoritmiada 2022
=====> Runda 1
=====> Runda 2
=====> Runda 3
=====> Runda 4
===> Summer Challenge 2021
===> Junior Challenge 2021
===> FMI No Stress 10
===> Winter Challenge 2020
===> Autumn WarmUp 2020
===> Summer Challenge 2020
===> Junior Challenge 2020
===> Concurs de incalzire 2020
===> FMI No Stress 9
===> Autumn WarmUp 2019
===> Summer Challenge 2019
===> Junior Challange 2019
===> Algoritmiada 2019
===> Info Oltenia 2019
===> Arhiva concursuri
=====> Info Oltenia 2018
=====> Junior Challenge 2018
=====> Algoritmiada 2018
=====> AGM 2018
=====> Grigore Moisil 2018
=====> RCPC 2018
=====> Fmi No Stress 8
=====> Urmasii lui Moisil 2017
=====> Grigore Moisil 2017
=====> Prosoft @ NT
=====> Algoritmiada 2017
=====> PreOJI 2017
=====> FMI No Stress 2017
=====> AGM 2017
=====> Lot 2017
=====> ACM ICPC Faza Nationala 2017
=====> PreOJI 2016
=====> ONIS 2016
=====> Grigore Moisil 2016
=====> Urmasii lui Moisil 2016
=====> AGM 2016
=====> Algoritmiada 2016
=====> FMI No Stress 6
=====> Urmasii lui Moisil 2015
=====> FMI No Stress 5
=====> ONIS 2015
=====> Concursul National de Soft Grigore Moisil Lugoj
=====> ACM-ICPC Faza Nationala 2014-2015
=====> Infoarena Monthly 2014
=====> Concurs Mihai Patrascu 2013
=====> Algoritmiada 2015
=====> AGM 2015
=====> Junior Challenge 2015
=====> ONIS 2014
=====> Algoritmiada 2014
=====> FMI No Stress 4
=====> preONI 2006
=====> .com 2012
=====> Infoarena Monthly 2012
=====> Code Pandas
=====> Algoritmiada 2013
=====> FMI No Stress 3
=====> FMI No Stress 2012
=====> Junior Challenge 2012
=====> Algoritmiada 2012
=====> .com 2011
=====> Girls Programming Camp 2011
=====> Algoritmiada 2011
=====> F11 Competition 2011
=====> Tiberiu Popoviciu 2011
=====> Grigore Moisil 2011
=====> RMMS 2011
=====> FMI No Stress 2010
=====> Grigore Moisil 2010
=====> .com 2009
=====> Stelele Informaticii 2009
=====> Stelele Informaticii 2010
=====> Algoritmiada 2009
=====> Algoritmiada 2010
=====> Grigore Moisil 2009
=====> CCEX 2009
=====> Summer Challenge 2009
=====> All You Can Code 2008
=====> Selectie echipe ACM ICPC, UPB 2008
=====> Junior Challenge 2008
=====> Happy Coding 2008
=====> preONI 2008
=====> Grigore Moisil 2008
=====> Winter Challenge 2008
=====> Happy Coding 2007
=====> Autumn Warmup 2007
=====> preONI 2007
=====> Summer Challenge 2007
=====> Junior Challenge
=====> Winter Challenge 1
=====> Unirea 2007
=====> Happy Coding 2006
=====> Autumn WarmUp 2006
=====> Summer Challenge Doi
=====> Summer Challenge
=====> Happy coding
=====> Grigore Moisil
=====> Happy Birthday Infoarena
===> RCPC 2019
===> Summer Challenge Trei
=> Arhiva de probleme
===> Probleme pentru bacalaureat
=> Arhiva Infoarena Monthly
=> Arhiva ACM
=> Arhiva educationala
=> Concursuri virtuale
=> Informatica
===> Teme
=> Articole
===> Downloads
=> Probleme externe
===> .CAMPION
===> SGU
===> TIMUS
===> UVA
===> SPOJ
===> PKU
===> TJU
-----------------------------
Comunitate - feedback, proiecte si distractie
-----------------------------
=> Implica-te!
===> Arhiva educationala
===> Imbunatatire teste
===> Development
===> Scrie articole
===> Extinde arhiva
=> Blog
=> Feedback infoarena
===> Sondaje
===> Arhiva
===> IAP (Infoarena Proposal)
=> Off topic
Se încarcă ...