Zadaci s natjecanja -> C,C++,Pascal
- poruka: 65
- |
- čitano: 23.866
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
Zujim
Da pogodim?
Opljačkali su te ko Hdz :D
Stvarno sramota..ljudi su očekivali po 100% rješenosti...na kraju imaju po 10%
DA !!!!!!!
Prvi 0 ??????????
Cetvrti 0 ???????
Treci 6 ????????
???????????????????????
Rjesavam teske zadatke na spoj.pl, imam dobre rezultate na HONI-jima, i onda OVO ????????
Ma stoka lopovska kažem ti...
pogledaj razvoj softwarea tip mi s analognim satom u pascalu osvoji 2.mjesto....
Zbog njih mi se gadi komp dirat
Sastave zadatke gdje ti treba leđna moždina i prsti da ih rješiš pa ti uzmu bodeve radi privida težine.
Kaj misliš oće li mi uvažit žalbu na compiller error...koristio sam long long int,makar bi mi i long int bio sasvim dovoljan?
Nece... Ja sam ove godine bio prvi put na natjecanju (1. razred) i stvarno mi je glupo bilo sto mi niko nikad nije napomenuo ni na pripremama ni na natjecanju da system("pause"); moram izbaciti van prije nego predam zadatke... Imao sam 0 bodova a znam da bi imao barem 60% da sam to znao.
Nece... Ja sam ove godine bio prvi put na natjecanju (1. razred) i stvarno mi je glupo bilo sto mi niko nikad nije napomenuo ni na pripremama ni na natjecanju da system("pause"); moram izbaciti van prije nego predam zadatke... Imao sam 0 bodova a znam da bi imao barem 60% da sam to znao.
Jesi si žalio?
Ma nisam, nisam ni ocekivao ove godine postene rezultate, isao sam samo da vidim kako to izgleda da sam sljedece godine bolji. I dobro da sam isao da mi se ovo ne dogodi poslije.
Ma daj, taj njihov emulator je pisao neko tko nezna programirati. Pol toga ne valja a tako jednostavna stvar.
Nece... Ja sam ove godine bio prvi put na natjecanju (1. razred) i stvarno mi je glupo bilo sto mi niko nikad nije napomenuo ni na pripremama ni na natjecanju da system("pause"); moram izbaciti van prije nego predam zadatke... Imao sam 0 bodova a znam da bi imao barem 60% da sam to znao.
A kak si na školskom natjecanju onda to maknuo?
Kako to misliš kako sam maknuo, nisam maknuo jer nisam znao.
Aha,ja sam moslio da si prošao na županijsko ...
Lud sam,znam,al eto od silne dosade u svom životu uhvatio sam se rjesavanja zadataka...
A i da oživim temu :)
Evo jedan zadatak koji stvarno neam pojma,pa ako moze tko pomoc,nije na odmet
Mjerenje Zemljišta
http://zatemas.zrs.hr/?app=evaluator&evlshw=solver&evlsolve=Mjerenje+zemlji%C5%A1ta
Kaze tadatak nepristupacan ...
MJERENJE ZEMLJIšTA 100 bodova
Kralj jedne veeelike kraljevine odlučio je podijeliti komadić zemlje svojim kmetovima da se vesele. Kralj je malo malouman, pa ne zna baš podijeliti zemlju kako treba. Jedino što kralj zna jest zadavati pravokutnike. Zato je unajmio malog Ivicu (to mu je ustvari savjetovao savjetnik) kao posrednika između njega i kmetova. Mali Ivica treba dešifrirati kraljeve pravokutnike i tako podijeliti zemlju kmetovima. Ivicu prvenstveno zanima koliko će kmetova uopće dobiti zemlju i koliki će biti najveći komad (da bi mogao srediti da ga dobije njegov djed). Kad kralj zada pravokutnik, to znači da želi da se stranicama tog pravokutnika na zemljištu povuče granica.
Jasno je da je taj zadatk toliko kompliciran da nadilazi ljudske mogućnosti (a kamoli mogućnosti malog Ivice), pa ćeš zato ti napisati program koji će pomoći malom Ivici da podijeli zemlju i osigura si djedovinu.
Zadan je cijeli broj 0 ≤ N ≤ 2000 (broj pravokutnika), te N uređenih četvorki (x,y,dx,dy) cijelih brojeva. x i y su koordinate gornjeg lijevog vrha pravokutnika (u Kartezijevom koordinatnom sustavu). dx je prirodan broj koji predstavlja širinu pravokutnika, a dy prirodan broj koji predstavlja visinu pravokutnika. Stranice pravokutnika paralelne su s koordinatnim osima. Svi pravokutnici su različiti (među ulaznim podacima ne postoje dvije jednake uređene četvorke). Svi pravokutnici će biti takvi da im niti jedan vrh neće izlaziti iz “velikog” 100*100 pravokutnika. Vrijedi 0 ≤ x, y ≤ 99 i 1 ≤ dx, dy ≤ 100. Niti jedan pravokutnik neće biti jednak “velikom” pravokutniku. Dakle (x,y,dx,dy) ≠ (0,0,100,100).
Napomena: Malo preciznije možemo reći da dva susjedna kvadratića (pravokutnici duljine i širine 1 sa koordinatama gornjih lijevih vrhova (x1, y1) te (x1±1, y1), odnosno (x1, y1) te (x1, y1±1)) pripadaju istom dijelu (velikog) pravokutnika, ako između njih ne prolazi niti jedna granica (niti jedna stranica bilo kojeg pravokutnika). Bilo koja dva kvadratića k1 i kn pripadaju istom dijelu pravokutnika, ako postoje kvadratići k2, k3, …, kn-1 takvi da su ki i ki+1 susjedni i pripadaju istom dijelu pravokutnika (i=1, …, n – 1).
Zadatak je izračunati na koliko različitih dijelova ti pravokutnici dijele “veliki” pravokutnik, te kolika je površina najvećeg dijela. Jasno je da veliki pravokutnik ne može biti podijeljen na više od 100*100=10,000 dijelova.
Sada bi trebalo precizno definirati dio pravokutnika, no umjesto toga poslužit će intuitivno shvaćanje problema i nekoliko primjera (vidi slike):
Imamo li 0 pravokutnika, cijelo zemljište podijeljeno je na 1 dio (samo zemljište), a površina najvećeg dijela je površina tog jedinog dijela (100*100).
1 pravokutnik dijeli zemljište na 2 dijela: unutrašnjost i vanjštinu pravokutnika. Površina najvećeg dijela je površina većeg od ta dva dijela.
2 (različita) pravokutnika mogu dijeliti zemljište na 3, 4, 5 ili 6 dijelova.
Ulazni podaci
Ulazni podaci učitavaju se s standardnog ulaza. Datoteka sadrži N+1 redaka. U prvom retku se nalazi cijeli broj 0 ≤ N ≤ 2000), broj pravokutnika. U slijedećih N redaka nalazi se N uređenih četvorki (x, y, dx, dy), po jedna u svakom retku, u obliku: x y dx dy. Vrijedi 0 ≤ x, y ≤ 99 i 1 ≤ dx, dy ≤ 100. Svi pravokutnici su različiti (među ulaznim podacima ne postoje dvije jednake uređene četvorke). Niti jedan pravokutnik neće biti jednak “velikom” pravokutniku. Dakle (x,y,dx,dy) ≠ (0,0,100,100). Ulazna datoteka prema tome ima oblik:
N
x1 y1 dx1 dy1
x2 y2 dx2 dy2
.
.
.
xN yN dxN dyN
Izlazni podaci
Izlazni podaci trebaju se nakon završetka programa ispisati na standardni izlaz. Treba sadržavati jedan redak u kojem se nalaze dva prirodna broja Sol i Pmax. N. Sol predstavlja broj kmetova koji će dobiti zemlju (broj dijelova na koje je podijeljen veliki pravokutnik), a Pmax površinu (bilo kojeg) najvećeg dijela.
Test primjeri
ulaz
1
39 12 32 19
izlaz
2 9392 ulaz
2
59 5 41 90
57 21 21 6
izlaz
4 6298
Nisam siguran, ali ja bi probao nesto ovako.
Veliki kvadrat je relativno mali, dakle za skvaku tocku mozemo izracunati koliko se moze prostirati lijevo odnosno desno i gore - dolje. To traje 100^4, ali da se optimizirati sortiranjem pravokutnika. Pa onda racunati najveci moguci pravokutnik. TL je 5s pa se da. Idem na kupanje, pa kada se vratim cu ga rijesiti.
Nisam siguran ako si me shvatio ali razmisljaj u danim okvirima.
Nazlosot ne mogu ti pomoci, nisam u potpunosti shvatio zadatak, mozda nekada kasnije ....
Koliko te interesiraju algoritmi ?
Ako ti se da zaje*avat s time onda se prijavi na sljedece stranice:
www.spoj.pl. tu su ti zadaci za vjezbu, sto god te interesira mozes mene pitati ...
www.codechef.com ovdje su ti svaki mjesec natjecanja tj imas za 6 dana natjecanje koje traje 10 dana !
www.codeforces.com isto natjecanja po 4 5 svaki mjesec ...
Pa ako se zelis spremati za natjecanja sljedecih godina onda se definitivno prijavi ...
Inace meni je to i dobra zabava ... (znam da je malo lame, ali obozavam izazove ...)
Nazlosot ne mogu ti pomoci, nisam u potpunosti shvatio zadatak, mozda nekada kasnije ....
Koliko te interesiraju algoritmi ?
Ako ti se da zaje*avat s time onda se prijavi na sljedece stranice:
www.spoj.pl. tu su ti zadaci za vjezbu, sto god te interesira mozes mene pitati ...
www.codechef.com ovdje su ti svaki mjesec natjecanja tj imas za 6 dana natjecanje koje traje 10 dana !
www.codeforces.com isto natjecanja po 4 5 svaki mjesec ...
Pa ako se zelis spremati za natjecanja sljedecih godina onda se definitivno prijavi ...
Inace meni je to i dobra zabava ... (znam da je malo lame, ali obozavam izazove ...)
Zanimaju me algoritmi,svakako,ionako mi je predosadno u zivotu ovo mi je jedan od najvecih izvora zabave...
na spoju vec imam acc,al su dosta teski zadaci,pocinjem se bavit tim ozbiljnije sad kad do kraja proucim samu sintaksu c++a :)
A sad sta se tice onog zadatka....
recimo da dobijemo N pravokutnika kojima znamo koordinate sva četiri vrha...kako bi saznali koja je najmanja površina koju oni mogu zauzeti(tj. kako ih idealno potrpat jednog u drugog,preklopit...)
Sada te nisam shvatio, ako im znas vrhove onda ih nemozes micati.
No mislim da znam na sto ciljas. Zelis znati koliku povrsinu oni svi skupa zatvaraju, s obzorom na okolinu, tj ono sto se preklapaju broji se samo jednom.
Jesam u pravu ... Da ne pisem bezveze ...
Sada te nisam shvatio, ako im znas vrhove onda ih nemozes micati.
No mislim da znam na sto ciljas. Zelis znati koliku povrsinu oni svi skupa zatvaraju, s obzorom na okolinu, tj ono sto se preklapaju broji se samo jednom.
Jesam u pravu ... Da ne pisem bezveze ...
Ma ne,mozes ih micat,zapravo iskoristis vrhove samo da izracunas duljinu stranica( bolje da sam reko da imas duljinu stranica..sry) i onda je pitanje kako ih posloziti da zauzmu sto manju povrsinu( mozemo stavljat manjeg u veceg i to...)
i jos jedno pitanje...na ovo stranici codechef sam rjesio zadatak Sum of Pairs,spada pod easy...ali skroz sugavim algoritmom,evo kod:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int main(){
int N;
int niz[10000];
scanf("%d",&N);
for(int i = 0 ; i < N ; ++i) scanf("%d",niz+i);
int *x0,*x1,*y0,*y1;
int m1,m2,ma1,ma2;
x0 = min_element(niz,niz+N);
m1 = *x0;
*x0 = 9999999;
y0 = min_element(niz,niz+N);
m2 = *y0;
*x0 = m1;
x1 = max_element(niz,niz+N);
ma1 = *x1;
*x1 = -5;
y1 = max_element(niz,niz+N);
ma2 = *y1;
*x1 = ma1;
int min = m1+m2;
int max = ma1+ma2;
int B[10000];
int p = 0;
for(int i = min ; i <= max ; ++i)
{
int w = 0;
memcpy( B , niz , sizeof B);
for(int j = 0 ; j < N-1 ; ++j)
for( int k = j+1 ; k < N; ++k)
{
if(B[j] + B[k] == i)
{
++w;
B[j] = -10;
B[k] = -10;
}
}
if ( w > p ) p = w;
}
printf("%d\n",p*2);
return 0;
}
ja stvarno mislim da je ovo presporo,ali je na neku foru proslo :/
Kako bi ti rješavao ovaj zadatak?
LOL, izabrao si najdebilniji zadatak s codechefa, nema niti ogranicenja niti kaze kako smijemo odablirati brojeve, samo za redom, ili bilo kako ...
Dakle moja pretpostavka jest da je N < 1000.
Tada sve sto trebas napraviti jes naci sve moguce sume 2 broja ...
for ( int i = 0; i < N; ++i )
for ( int j = i+1; j < N; ++j )
sums.push_back( A[i] + A[j] );
Sve sto trebas napraviti jest viditi kojih suma imas najvise.
Eh sada, neznam koliki je N, ali ako sortiras, onda samo ides redom i gledas koliko kojih suma imas ....
Najveci broj pomnozi s 2 i gotovo ...
Nisam kodirao ali ti molimte probaj pa javi ...
EDIT : ako je N > 100000 ovaj algo ovog tipa pada u vodu, jer suma imas N * (N-1) / 2 ...
Neama pojma ni koliki su brojevi A[i] ... ako su oni maleni onda mozes imati array S[A[i] + A[j]] pa onda uzeti najveci ...
I jos, ako ti zadatak pada na vremenu, a mislis da je algoritam dobre kompleksnosti onda smanji koristenje STL-a.
LOL, izabrao si najdebilniji zadatak s codechefa, nema niti ogranicenja niti kaze kako smijemo odablirati brojeve, samo za redom, ili bilo kako ...
Dakle moja pretpostavka jest da je N < 1000.
Tada sve sto trebas napraviti jes naci sve moguce sume 2 broja ...
for ( int i = 0; i < N; ++i )
for ( int j = i+1; j < N; ++j )
sums.push_back( A[i] + A[j] );
Sve sto trebas napraviti jest viditi kojih suma imas najvise.
Eh sada, neznam koliki je N, ali ako sortiras, onda samo ides redom i gledas koliko kojih suma imas ....
Najveci broj pomnozi s 2 i gotovo ...
Nisam kodirao ali ti molimte probaj pa javi ...
Ma to sam ja i radio,samo sam odredio raspon u kojem mogu biti sume,i trazio za koju sumu se da sloziti najveci niz...i proslo je :P
Makar mi nije jasno zasto je prolaznost 12%...ljudi govore kako im je na TL pao,mislim gore od gledanja svih suma ne moze...
eee ljudiii...jel moze rjesenje: Napisati program u pascalu koji ce racunati zbroj kvadrata 2 broja? HITNOOOOO :)
Program prvi;
var a,b,zbroj:integer;
begin
readln(a);
readln(b);
zbroj := sqr(a)+sqr(b);
writeln(zbroj);
end.