infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: ditzone din Ianuarie 21, 2006, 17:04:31



Titlul: 168 Numarare triunghiuri
Scris de: ditzone din Ianuarie 21, 2006, 17:04:31
Aici puteţi discuta despre problema Numarare triunghiuri (http://infoarena.ro/problema/nrtri).


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: marius gherman din Februarie 14, 2006, 18:26:42
cum se face de 100?  :roll:


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: u-92 din Februarie 14, 2006, 19:08:00
citeste articolul cu solutii de pe info.devnet.ro


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Sima Mihai Cotizo -vechi din Februarie 14, 2006, 22:56:31
mie mi-a mers si cu un fel de N^3  :harhar:, sa fie de la teste???
 dar mai frumos e cu cautare binara...


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: ditzone din Februarie 15, 2006, 13:40:49
E si mai frumos cu n^2


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Bondane Cosmin din Februarie 19, 2006, 19:22:55
cum adik nedescrescatoare? nu inteleg ce vrea sa zica... :oops:


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Bogdan-Cristian Tataroiu din Februarie 20, 2006, 16:06:08
Crescatoare...   :-s


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Bondane Cosmin din Februarie 20, 2006, 16:40:34
10x am luat 70 cu o sol de O(n^3)


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Tabara Mihai din Septembrie 30, 2006, 11:51:12
Am facut O(N^3) - 75.
Am facut si cu Cautare Binara si a mers de 100.

Insa daca a facut cineva in O(N^2) as vrea sa imi explice putin ideea.  :-k

Multumesc. :ok:


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Marius Stroe din Septembrie 30, 2006, 17:01:38
Hashing ...


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Tabara Mihai din Septembrie 30, 2006, 20:44:56
Hashing ...

Aveam o presimtire ca se face asa.OK. multumesc. :weightlift:


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Marius Stroe din Septembrie 30, 2006, 21:11:53
Nu e nevoie sa presimti, e nevoie sa stii ca o cautara binara o poti inlocui cu un hashing.


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Cosmin Negruseri din Octombrie 03, 2006, 16:19:33
Merge fara hashing, e algoritm de 5 linii.


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Andrei Homorodean din Februarie 15, 2007, 22:57:45
http://infoarena.ro/problema/nrtri .. nu ar trebui sa dea exemplul 1? Eu am facut n^3, am luat 75. Si acum implementez si cautarea binara, deci daca mi-a dat pe majoritatea testelor, raspunsul 2 ar trebui sa fie gresit.


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Tabara Mihai din Februarie 15, 2007, 23:01:03
http://infoarena.ro/problema/nrtri .. nu ar trebui sa dea exemplul 1? Eu am facut n^3, am luat 75. Si acum implementez si cautarea binara, deci daca mi-a dat pe majoritatea testelor, raspunsul 2 ar trebui sa fie gresit.
Scuze...nu mai retineam ideea..
am verificat acuma cu sursa mea si e 1.( am luat 100 cu ea )

Ar trebui schimbat enuntul. :-s
Scuze de eroarea initiala.Imi cer scuze  :'(


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Savin Tiberiu din Februarie 15, 2007, 23:03:10
exemplul e intr-adevar gresit, (2+3<6) si totusi cum de nu a observat nimeni pana akuma


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Tabara Mihai din Februarie 15, 2007, 23:05:46
exemplul e intr-adevar gresit, (2+3<6) si totusi cum de nu a observat nimeni pana akuma

Chiar asa  :shock: ?????
Poate s-a schimbat intre timp din greseala...sau poate cand s-a mutat site-ul desi ma cam indoiesc ... :-k

 :oops:


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Andrei Homorodean din Februarie 16, 2007, 23:01:58
Si totusi, nu modifica nimeni ... ?


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Adrian Diaconu din Februarie 16, 2007, 23:09:47
Gata, am modificat.


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Andrei Homorodean din Februarie 16, 2007, 23:24:16
Modificarile se aplica dupa un timp? Sau cum functioneaza chestia?


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Adrian Diaconu din Februarie 17, 2007, 00:06:53
Nu, pur si simplu acum am avut timp  :-' ... sorry


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Ionescu Vlad din Martie 31, 2007, 18:30:55
 ](*,)Nu-mi iese nicicum cautarea binara la problema asta si ma chinui de ceva timp ](*,)

Acuma am ajuns sa fac in felul urmator:
2 foruri, i=0..n-1, j=i+1..n-1 prin care fixez a si b
cautarea binara in cel de-al doilea for:
x = j+1, y = n-1;
m = (x+y)/2;
daca a[ i ]+a[j] >= a[m] atunci
x = m+1
si un contor temporar este m-j...

in afara while-ului de la cautarea binara, adun la contorul final contorul temporar... merge pe exemplul din enunt, dar pe altele intr-adevar nu.. ce gresesc?

apropo, cu hashing cum ar fi? exista vreun articol de inceput despre asta?

EDIT: am rezolvat cu cautarea binara pana la urma.. dar as fi interesat s-o fac si cu hashing, as putea citi undeva despre asta?


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Stefan Istrate din Martie 31, 2007, 18:50:00
http://infoarena.ro/tabele-hash-scurta-prezentare
http://infoarena.ro/tabele-hash-prezentare-detaliata


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Costea Marin din Februarie 19, 2008, 05:54:10
Salut

Eu sunt inca la inceput am cautat pe net informatii despre cautarea binara si am gasit cate ceva; din pacate nu pot sa-mi dau seama cum sa fac exercitiul asta; am doua foruri care imi calculeaza suma a doua numere din vector si dupa accea fac o cautare binara care imi da un raspuns aproximativ ,sau daca are, unul exact; si dupa aceea calculez nr. total de triunghiuri pe care pot sa-l obtin obtinut pe baza cautarii; dar nu-mi da bine; mie pe toate testele facute de mana si cele de pe generator imi iese bine; verific cu o sursa care foloseste 3 foruri; deci tarasenia apare ori la cautarea pe care o fac ori la cum calculez nr total de triunghiuri; daca vreti pot sa postez cautarea binara pe care o fac eu sa va uitati.
Rugamintea mea era cum ar trebui sa arate cautarea binara aici si cum se calculeaza nr total de triunghiuri;
eu il fac asa: nr:=nr+c-b-1; unde b este numarul din cel de-al doilea for; si c primul nr mai mare decat suma primelor 2 nr, adica

for a:=1 to n do
   for b:=a+1 to n do
       begin
        c:=find(a+b);
        nr:=nr+c-b-1;
       end;

Unde gresec??????

sunt inca la inceput si asa ca va rog sa nu va suparati daca pun intrebari stupide... :oops: :oops:


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Pripoae Teodor Anton din Februarie 23, 2008, 14:10:08
cautare binara: v:vectorul... p si u poz intre care cauti v [ i ] +v [ j ] ;

Cod:
int cautare(int p, int u)
{
  int m;
  m=(p+u)/2;
  while (p<=u){
      if ((v[m]<=v[i]+v[j] && v[m+1]>v[i]+v[j]) || (v[m]<=v[i]+v[j] && m==n-1))
  return m;
  else if (v[m]<=v[i]+v[j] && v[m+1]<=v[i]+v[j]) {
  p=m+1;
  m=(p+u)/2;
  }
  else {
  u=m-1;
  m=(p+u)/2;
  } 
  }
  return 0;
}

sper ca intelegi  :P

aaa vectorul e de la 0 la n... daca il ai de la 1 la n pune n in loc de n-1 la primu if in while

si vezi ca tu trebuie sa ai
 
Cod:
..................................
for (i=0;i<n-2;++i)
    for (j=0;j<n-1;++j){
         caut(1,n);
    }
....................................


Titlul: pt Toni2007
Scris de: Costea Marin din Februarie 23, 2008, 15:30:10
WOW,  :shock: :shock: am invatat ceva azi.
Multumesc mult de tot ; chiar merge  :banana: multumesc frumos inca o data pentru ajutor, momentele astea in care ne ajutam unii pe altii sunt poate cele mai minunate din toata viata noastra, a fost incredibil ce am simtit azi si acum, iti multumesc mult inca o data. sa ai bafta in continuare la olimpiade si in viata. Sa iesi pe :winner1: si sa ai grija de tine. Salut


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Farcasanu Alexandru Ciprian din Martie 01, 2008, 08:34:42
In solutiile oficiale scrie ca trebuie sa sortam vectorul nedescrescator.......a sorta nedescrescator  nu inseamna a sorta crescator, ci doar a sorta oarecum aleatoriu astfel incat sa nu fie descrescator(iar pe cautare binara merge decat cu crescator si descrescator).....nu am dreptate?


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Bogdan-Cristian Tataroiu din Martie 01, 2008, 08:54:37
O functie e "crescatoare" daca oricare ar fi x < y, f(x) < f(y).
O functie e "nedescrescatoare" daca oricare ar fi x < y, f(x) <= f(y).

Asa e in engleza cel putin... Se intelege destul de clar ce se vrea...


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Catalin Ionescu din Decembrie 29, 2008, 01:16:09
Gata, am modificat.

si totusi vreau si eu sa te intreb de ce in exemplu e
4
2 3 7 4   2 (care e corect)
iar explicatia e ca variantele sunt
1, 2, 4
2, 3, 4
cand acestea sunt :
2 3 7
2 4 7


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Paul-Dan Baltescu din Decembrie 29, 2008, 01:30:50
Citat
Singurele triunghiuri care se pot forma sunt alcatuite din urmatoarele betisoare (date prin numarul de ordine):
1, 2, 4
2, 3, 4

Citeste mai atent.


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Catalin Ionescu din Decembrie 29, 2008, 01:36:15
corect :) scuzele mele :)


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Dragos Oprica din Decembrie 30, 2008, 11:25:54
ma ajuta cineva si pe mine va rog cu un test mai urat sau daca binevoieste cineva sa vada sursa

http://infoarena.ro/job_detail/237622

iau doar 55, si fac ca toata lumea cu cautare binara


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Emanuel Cinca din Decembrie 30, 2008, 12:37:50
eu buseam la cautarea binara  :oops:... trimite-mi sursa pe prv daca vrei :peacefingers:


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Alexandru-Iancu Caragicu din Februarie 10, 2009, 19:04:29
De unde vine betisorul de lungime 1? :-s

A. Sunt pozitii. Ar trebui specificat.  :readthis:

 Editat de moderator: Nu mai posta succesiv. Editeaza-ti mesajele precedente!


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Paul-Dan Baltescu din Februarie 10, 2009, 20:10:33
E foarte clar specificat.


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Vladimir Oltean din Martie 01, 2009, 00:58:43
cu o mica optimizare se pot scoate 100p si cu O(n^3). dar cautarea binara intra muuuult mai lejer in timp :D


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Florian Marcu din Martie 01, 2009, 15:15:27
Ce optimizare?


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Vladimir Oltean din Martie 01, 2009, 22:04:40
Ce optimizare?

in al 3lea for, nu parcurgi vectorul pana la capat, ci pana gasesti prima valoare care nu mai respecta conditia v[ i ]+v[ j ]<=v[ k ]. pentru ca ai sortat dinainte vectorul, conditia va fi falsa si pentru toate valorile de dupa acest k. in practica folosesti un mic break.

sper ca am fost clar :D

[L.E.] Cred ca ar putea fi modificate testele astfel incat sa descurajeze folosirea smecheriei asteia :) adica conditia de care ziceam sa devina falsa spre sfarsitul vectorului, astfel incat sa nu mai conteze foarte mult la timp break-ul ala.


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: gaboru corupt din Aprilie 23, 2009, 23:42:01
Cat da pentru testul :

Cod:
20
7 10 5 2 8 9 14 6 5 3 5 12 17 4 3 1 9 3 4 16

Mie imi da 482. Scot doar 50 de puncte si nu imi dau seama ce are  :-k


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Pripoae Teodor Anton din Aprilie 24, 2009, 00:50:00
539


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Usurelu Catalin din August 03, 2009, 22:54:56
Wait a sec, cum adica , conditia e ca a+b<=c ? pai daca a+b=c atunci inaltimea e 0 deci aria e 0 deci triunghiul nu exista. Prin urmare conditia nu ar trebui sa fie defap a+b<c ?


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Gabriel Bitis din August 04, 2009, 08:02:58
Exista si triunghiul cu inaltimea 0. Daca ai 3 puncte in plan, ele pot determina un triunghi; daca sunt coliniare, triunghiul format de ele are inaltimea 0.


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: cristescu liviu din Ianuarie 02, 2011, 14:32:01
se poate face problema fara cautare binara....

se sorteaza, eu am folosit quick-ul

cu 2 for-uri
nr=0;
   for(i=1;i<=n-2;++i)
      for(j=i+1;j<=n-1;++j)
         {
            int k=j+1;
            while(v+v[j]>=v[k] && k<=n)
               ++k;
            
         
            nr+=k-j-1;
            
         }

iei 100 pct pe asta pe cel mai mare timp am scos 64 ms, dublu fata de cautare binara:)


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: FMI - Roscaneanu George din Februarie 28, 2011, 09:59:57
Mie mia iesit in O(n^3) cu 100p. Sami explice si mie cineva cum poate fi folosita cautarea binara aicea  :-' .
Deci din ce banuiesc eu.
Sortez descrescator.
for(i=0;i<n-2;i++)
for(j=i;j<n-1;j++)
si apoi caut cel mai mic si cel mare numar (prin cautare binara) care poate face trunghi cu celelate doua ?


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Bodnariuc Dan Alexandru din Ianuarie 02, 2012, 12:30:23
apropo se poate cauta primul x<=val intrun hash? fara a sorta nimic? ???


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Cristian Lambru din Ianuarie 02, 2012, 13:58:11
Nu, hash-urile nu tin niciun fel de ordine. Pentru ceea ce ceri tu ai nevoie, ori de alta structura de date, ori de o sortare si apoi sa cauti binar!


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Costache Rares din Mai 20, 2012, 19:55:10
FRATE!.....  ](*,)


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Barbu Dorel din August 22, 2013, 20:10:26
In mod sigur nu gandesc bine, dar nu stiu de ce. Inegalitatea triunghiului afirma ca suma a doua laturi este mai mare ca cea de a treia. Dar de ce este suficient sa verificam daca:

if (a[k]<=a+a[j])

si nu trebuie sa luam in cnsiderare si celalate cazuri: a[j]<=a[k]+a si a[<=a[j]+a[k]. Imi scapa ceva... #-o . Ar putea cineva sa ma lamureasca si pe mine?  ](*,)


EDIT: Mi-am dat seama :)))))


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Bejenariu Ionut Daniel din Februarie 25, 2014, 16:58:57
mie imi merge si fara cautare binara


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: theprdv din Iunie 19, 2015, 11:14:18
Citat
se considera triunghiuri si cele care au un unghi de 180 de grade si celelalte doua de 0 grade (2 segmente coliniare se confunda cu al 3-lea)
dupa enunt se poate forma si triunghiul 2 3 4  (4 + 3 <= 7).. e gresit enuntul sau nu inteleg eu bine?


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: theprdv din Iunie 19, 2015, 11:17:56
sorry, este specificat, nu am fost atent


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Andrei Stroici din Aprilie 29, 2019, 16:13:26
conditia ca sa formezi un triunghi cu laturile de lungime a,b,c nu este a+b>c? :-'


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Adrian Budau din Mai 05, 2019, 05:45:46
Aproape, este necesar dar nu suficient. a = 10, b = 1, c = 1. a + b > c dar aceste 3 nu pot reprezenta laturile unui triunghi.

Si in restrictii scrie ca si triunghiurile degenerate sunt acceptate (cele cu un unghi de 180 de grade si 2 de 0 grade), deci restrictia ar trebui sa fie a + b >= c.


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Andrei Stroici din Iulie 16, 2019, 16:35:15
dar corect aceasta relatie este pt toate laturile(a<b+c&&b<a+c&&c<a+b)


Titlul: Răspuns: 168 Numarare triunghiuri
Scris de: Andrei Stroici din Iulie 16, 2019, 16:35:54
dar corect aceasta relatie este pt toate laturile(a<b+c&&b<a+c&&c<a+b)