Pagini: 1 2 3 [4]   În jos
  Imprimă  
Ajutor Subiect: 011 Copaci  (Citit de 27176 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
gabitzish1
Moderatori infoarena
Nu mai tace
*****

Karma: 321
Deconectat Deconectat

Mesaje: 926



Vezi Profilul
« Răspunde #75 : Martie 03, 2009, 14:56:07 »

Foloseste long long.
Memorat
Sorin_Ionut
Client obisnuit
**

Karma: 14
Deconectat Deconectat

Mesaje: 53



Vezi Profilul
« Răspunde #76 : Martie 03, 2009, 16:12:42 »

Foloseste long long.

Bun sfat acum iau ultimele 6 teste dar primele nu mai merg (e chiar ceva ciudat)  Tongue

S-a rezolvat foloseam unsigned long long , dar valorile puteau fi si negative  Fool
 Multam'
« Ultima modificare: Martie 03, 2009, 16:25:59 de către BYSorynyos » Memorat
APOCALYPTO
Nu mai tace
*****

Karma: 3
Deconectat Deconectat

Mesaje: 250



Vezi Profilul
« Răspunde #77 : Iulie 23, 2010, 12:46:44 »

Salut!
 
Imi poate explica si mie cineva de ce imi apar probleme la convertirea in double(sau float).
Pentru aceasta bucata de  cod primesc 0 puncte.
Cod:
  double arie;
   double B;    


 if (arie < 0)
        arie = - arie;
     arie-=B;
     arie+=2;
    
    fout << (double)arie/2;  //iar daca schimb cu (float) sau nu sterg (double) tot 0 iau.

Iar pentru aceasta primesc 100(desi nu e normal sa impart asa la 2)
Cod:
  long long arie;
   long long B,N;  


if (arie < 0)
     arie = - arie;
fout << ((arie - B) >> 1) + 1;
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #78 : Iulie 23, 2010, 12:56:25 »

Cred ca stiu care e problema : daca faci ca in primul caz, rezultatul va fi afisat cu zecimale, iar in cazul in care numarul se imparte exact, numarul o sa fie de forma : X.000.. Dupa cum am citit problema, cred ca rezultatul trebuie sa fie intreg .
Memorat
APOCALYPTO
Nu mai tace
*****

Karma: 3
Deconectat Deconectat

Mesaje: 250



Vezi Profilul
« Răspunde #79 : Iulie 23, 2010, 13:24:52 »

Cred ca stiu care e problema : daca faci ca in primul caz, rezultatul va fi afisat cu zecimale, iar in cazul in care numarul se imparte exact, numarul o sa fie de forma : X.000.. Dupa cum am citit problema, cred ca rezultatul trebuie sa fie intreg .
Posibil.
Eu rulez in windows(am probleme cu linux-ul) si nu imi afiseaza cu 0-uri.

LE. Nici nu trebuie sa afiseze cu 0-uri probabil il linux afiseaza cu 0-uri.
« Ultima modificare: Iulie 23, 2010, 13:40:34 de către Dragos » Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #80 : Iulie 23, 2010, 13:31:51 »

Pune asa : fout << setprecision ( 0 ) << fixed , si introduci : #include <iomanip>
Memorat
robert.badea
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 16



Vezi Profilul
« Răspunde #81 : Decembrie 06, 2010, 23:01:44 »

Huh? Pot fi si negative? In cerinta scrie clar [0; ...
Memorat
dutzul
De-al casei
***

Karma: 42
Deconectat Deconectat

Mesaje: 119



Vezi Profilul
« Răspunde #82 : Iulie 22, 2012, 18:03:13 »

eu incerc sa rezolv problema impartind poligonul in triunghuri si calculand pt fiecare nr de puncte din interiorul lui..numa ca nam idee cum sa impart un poligon concav
Memorat
Schumi
Client obisnuit
**

Karma: 36
Deconectat Deconectat

Mesaje: 74



Vezi Profilul
« Răspunde #83 : Iulie 22, 2012, 18:11:09 »

Nu trebuie sa imparti nimic. Solutia foloseste teorema lui Pick. Citeste putin despre aceasta teorema si incearca sa rezovi dupa  wink
http://en.wikipedia.org/wiki/Pick's_theorem
Memorat
dutzul
De-al casei
***

Karma: 42
Deconectat Deconectat

Mesaje: 119



Vezi Profilul
« Răspunde #84 : Iulie 22, 2012, 18:18:15 »

am inteles ca se poate si cu teorema lui pick ,dar eu sunt curios cum se face cu ideea mea,adica cum se imparte un poligon concav in triughiuri
Memorat
danalex97
Vorbaret
****

Karma: 54
Deconectat Deconectat

Mesaje: 192



Vezi Profilul
« Răspunde #85 : Iulie 24, 2012, 08:30:09 »

O posibila rezolvare la ce ai cerut tu cred ca iti pot oferi , sau , daca nu sunt destul de explicit , cel putin o idee. Pornesti dintr-un punct si parcurgi laturile 2 cate 2 si trasezi cate daca dreapta respectiva nu va fi trasata in exteriorul poligonului. Apoi mergi pe dreptele trasate si repeti operatia pana ai numai triunghiuri. Pe hartie am facut si cateva exemple  cu 3-4 pasi si mi se pare ca ar merge. Problema e la implementat...
« Ultima modificare: Iulie 24, 2012, 08:41:06 de către Dan Alexandru » Memorat
Oancea.Catalin
Client obisnuit
**

Karma: -3
Deconectat Deconectat

Mesaje: 75



Vezi Profilul
« Răspunde #86 : August 22, 2012, 21:52:32 »

Primesc WA pe toate testele  Brick wall. Nu stiu ce poate fi gresit. Imi merg toate testele bagate de mine si folosesc long long. De la ce ar putea fi?

Job detail 780978.
Memorat
visanr
Nu mai tace
*****

Karma: 168
Deconectat Deconectat

Mesaje: 213



Vezi Profilul
« Răspunde #87 : August 22, 2012, 23:07:31 »

Afiseaza rezultatul final fara zecimale si iei 100 de pct.
Memorat
Oancea.Catalin
Client obisnuit
**

Karma: -3
Deconectat Deconectat

Mesaje: 75



Vezi Profilul
« Răspunde #88 : August 22, 2012, 23:17:19 »

Da...asta era.
Multumesc!  Smile
Memorat
bratiefanut
Strain
*

Karma: 3
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #89 : Februarie 22, 2013, 16:20:35 »

Am sursa asta pt problema "Copaci":
Cod:
#include <fstream>
#include <stdlib.h>
using namespace std;

........
 
   g<<p;
    f.close();
    g.close();
    return 0;
}
Obtin doar 60 de puncte, pe primele 4 teste iau WA. imi poate sugera cineva ceva?
LE: cod sters pt a evita copy-paste.
« Ultima modificare: Martie 03, 2013, 13:07:01 de către Bratie Fanut » Memorat
laurion
De-al casei
***

Karma: -41
Deconectat Deconectat

Mesaje: 102



Vezi Profilul
« Răspunde #90 : Februarie 23, 2013, 00:07:29 »

Am sursa asta pt problema "Copaci":
Cod:
#include <fstream>
#include <stdlib.h>
using namespace std;

struct punct
{
    long long x, y;
};
punct v[100001];

long long n,i,a,b;

long long cmmdc( long long a, long long b )
{
long long r;
while( b )
{
r = a % b;
a = b;
b = r;
}
return a;
}


int main()
{
    ifstream f("copaci.in");
    ofstream g("copaci.out");

    f>>n;
    for(i=1;i<=n;i++)
    f>>v[i].x>>v[i].y;

    b=0;
    for(i=1;i<n;i++)
    b+=cmmdc(llabs(v[i].x-v[i+1].x),llabs(v[i].y-v[i+1].y));

     long long x1,x2,y1,y2;
    for(i=1;i+1<n;i++)
    {
        x1=v[i].x-v[0].x;
        y1=v[i].y-v[0].y;
        x2=v[i+1].x-v[0].x;
        y2=v[i+1].y-v[0].y;
        a+=x1*y2-x2*y1;
    }
    a=llabs(a*0.5);

    long long p=a-(b/2)+1;
    g<<p;
    f.close();
    g.close();
    return 0;
}
Obtin doar 60 de puncte, pe primele 4 teste iau WA. imi poate sugera cineva ceva?

trebuie sa iei si perechea (n,1)
adica in for i<=n unde v[ n+1 ] = v[ 1 ]
Memorat
bratiefanut
Strain
*

Karma: 3
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #91 : Februarie 23, 2013, 15:29:41 »

multumesc am luat 100 Applause
Memorat
MyrmekoMe
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #92 : Ianuarie 13, 2014, 18:22:34 »

nu se incadreaza in timp -_-. va rog sa ma scuzati ca v-am luat 0,01 secunde din viata. Tongue Smile)
Memorat
Vasile_Catana
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 5



Vezi Profilul
« Răspunde #93 : Ianuarie 19, 2014, 21:56:43 »

am doar 60 de p , primele 4 WA , spuneti-mi va rog care ii eroare
 Brick wall
program p1;
var a,b:array[0..100002] of longint;
    b3,b2:array[0..1 shl 17 ] of char;
    f,g:text;
    i,n,j,k,m,x,y,a1,b1:longint;
    aria,nr:int64;
function  cmmdc(a1,b1:longint):longint;
begin
if (a1=0) or ( b1=0) then cmmdc:=b1
             else cmmdc:=cmmdc(b1,a1 mod b1);
end;
begin
assign(f,'copaci.in');settextbuf(f,b3);reset(F);
assign(g,'copaci.out');settextbuf(g,b2);rewrite(G);
readln(f,n);
for i:=1 to n do
        readln(f,a,b);
a[n+1]:=a[1];
b[n+1]:=b[1];
for i:=1 to n do begin
        aria:=aria + (a*b[i+1]-b*a[i+1]);
        nr:=nr+cmmdc(abs(a-a[i+1]),abs(b-b[i+1]));
                end;
aria:=abs(aria div 2);
write(g,aria-(nr div 2) +1 );
close(F);
close(G);
end.
Memorat
andrei.arnautu
Client obisnuit
**

Karma: 9
Deconectat Deconectat

Mesaje: 58



Vezi Profilul
« Răspunde #94 : August 08, 2014, 14:52:35 »

Imi pare bine ca am dat de aceasta problema, nu stiam de teorema lui Pick inainte. Smile
Memorat
alexandru822
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #95 : Aprilie 01, 2015, 10:33:56 »

Deci eu nu inteleg ce gresesc. As pune sursa dar ar lasa tentative de copy paste...
folosesc si long long int, pun rezultatul intrun numar intreg si apoi il afisez si tot iau 40p. pe ultimele 6 iau 0...
Memorat
otniel
Strain
*

Karma: -13
Deconectat Deconectat

Mesaje: 49



Vezi Profilul
« Răspunde #96 : Aprilie 20, 2017, 10:57:03 »

eu la problema asta am folosit long long pentru arie in loc de double si am luat 100. De ce functioneaza si cu long long? Sunt gresite testele sau nu conteaza, iar daca nu conteaza de ce merge?
Memorat
mouse_wireless
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 13



Vezi Profilul
« Răspunde #97 : Octombrie 05, 2018, 22:13:29 »

Citat
Coordonatele copacilor au valori intregi din intervalul [0, 2.000.000]
Asta inseamna ca inmultirea coordonatelor ar trebui facuta pe tipuri de date pe 64 de biti (i.e. long long in C/C++), dar sunt multe surse care iau 100 de puncte desi opereaza cu tipuri de date pe 32 de biti. Interesant ca nu este niciun test care sa verifice asta  Ok
Memorat
Pagini: 1 2 3 [4]   În sus
  Imprimă  
 
Schimbă forumul:  

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