← Back to topics
Topic

molekuli

n
nemanja90
a moglo bi i ovde neki od primera 4,6,7,9,10

znam da ve cpreterujem, ali mi je jako tesko da uocim greske bez primera pogoovo kod ovakvih zadataka gde ima puno podataka i promenjljivih.
kod onih sa manje promenljivih je mnogo lakse.

Nadam se a cu dobiti uvid u neki od ovih primera ili bar objasnjenje zasto primere ne mozemo da vidimo kao recimo na usaco.org gde ti prikazu ulazne i izlazne podatke za primer na kom si pao, kao i to sta si ti ispisao za taj primer.
b
boba5551
Pa tebi je 50% test primera netacno, sto znaci radi jos na zadatku. Mnogo manje ces postici ako stalno vijas test primere i na taj nacin uocavas gresku. Mozda bi onda trebao samo USACO da radis...
n
nemanja90
[quote author=Slobodan Mitrović link=topic=10390.msg12658#msg12658 date=1205952268]
Pa tebi je 50% test primera netacno, sto znaci radi jos na zadatku. Mnogo manje ces postici ako stalno vijas test primere i na taj nacin uocavas gresku. Mozda bi onda trebao samo USACO da radis...
[/q]

Znam, ali mi nije jasno gde gresim, 50 puta predjem kod i opet ne kapiram, a i ne pada mi na pamet ni jedan specijalan slucaj u ovakvom zadatku kao sto su molekuli.
b
boba5551
Pa ne mora da bude specijalan slucaj. Poenta je da gresimo u algoritmu i mislim da ne postoji osoba kojoj se ne desi da se zezne ponekad ma koliko iskustva imala. Mislim da je kod tebe greska u algoritmu ne gledajuci da mozda ne prolazi svi specijalni slucajevi. Malo zadataka ces naci (recimo ni jedan) gde je 50% test primera specijalan slucaj zadatka.
n
nemanja90
Ne trazim test primere ali samo te obavestavam da sam uradio zadatak ispocetka i pao mi je na istim primerima.



Znam da sam udavio i boga i narod vec na ovom forumu(ili samo tebe i sanju posto ste vi jedini ovde) ali moram da vam "prilozim" kod jer stvarno, ali stvarno, ne mogu da skapiram GDE GRESIM.

Ja jednostavno "nakacim" molekul1 na molekul 2, molekul2 na molekul3, molekul3 na molekul4, molekul1 na molekul4 i proverim da li se to sve poklapa. Mozda nije najoptimalnije resenje(sigurno a ne mozda) ali bi trebalo da radi.

EDIT: Sklonjen kod.
s
sanja
ogromna ti je slozenost, treba ti neko efikasnije resenje
n
nemanja90
On na vremenu prolazi odlicno(max 0.03 sec), to nije problem.
s
sanja
Ponekad Z-trening napise da izlazni kod nije nula, a zapravo je problem vreme. Meni se i dalje cini da ne moze ovo da prodje za 1 sekundu.

Svog resenja se ne secam, a kod mi je potpuno nejasan (mozda treba da pocnem da koristim komentare ;)), ali znam da sam se doooobro namucila s ovim zadatkom :)
n
nemanja90
Kazem ti da vreme nije problem.

Sad samo ne znam da li ne razumes moj ili tvoj kod?
Moj bira i1 i i2 na prvom molekulu, j1 i j2 na drugom, k1 i k2 na trecem i l1 i l2 na cetvrtom i onda spaja i2-j1,j2-k1,k2-l1,l2-i1. Da bi izabrao sledeci par, predhodni moraju biti spojeni na istom slovu. Onda proveri da li su spojevi isto udaljeni jedan od drugog tj. da li je stvarno u pitanju pravougaonik i ako je njegova povrsina veca od max, max dobije vrednost te povrsine.

To bi trebalo da radi za bilo koji test primer(osim za neki gde ima recimo 4 molekula duzine 20 i svi su sastavljeni od istih znakova) medjutim pada na ovih 5.
s
sanja
Ja ti kazem da puca na vremenu :)
Probaj
20
TESTTESTTESTTESTTEST
TESTTESTTESTTESTTEST
TESTTESTTESTTESTTEST
TESTTESTTESTTESTTEST
n
nemanja90
Program uspesno uploadovan...
Program ubacen na listu cekanja za testiranje testiranje...
Vreme cekanja zavisi od opterecenosti servera
Kompajliranje
Compile Ok
Vreme kompajliranja: 0.14 sekunde
Testiranje
Test 1 Tacno resenje vreme izvrsavanja programa 0 sekunde
Test 2 Tacno resenje vreme izvrsavanja programa 0 sekunde
Test 3 Tacno resenje vreme izvrsavanja programa 0 sekunde
Test 4 Pogresno resenje vreme izvrsavanja programa 0.01 sekunde
Test 5 Tacno resenje vreme izvrsavanja programa 0 sekunde
Test 6 Pogresno resenje vreme izvrsavanja programa 0.03 sekunde
Test 7 Pogresno resenje vreme izvrsavanja programa 0.01 sekunde
Test 8 Tacno resenje vreme izvrsavanja programa 0 sekunde
Test 9 Pogresno resenje vreme izvrsavanja programa 0 sekunde
Test 10 Pogresno resenje vreme izvrsavanja programa 0.02 sekunde

Neki testovi kao taj tvoj se dugo izvrsavaju jer imju puno istih slova, probaj ovaj pa ces videti da je ovo gore sasvim moguce:

20
abcdefghijklmnoprst
uvwxyzabcdefghijklmn
opqrstuvwxyzabcdefgh
ijklmnoprstuvwxyzab ;D
b
boba5551
[quote author=Nemanja a link=topic=10390.msg12725#msg12725 date=1207343565]
Neki testovi kao taj tvoj se dugo izvrsavaju jer imju puno istih slova, probaj ovaj pa ces videti da je ovo gore sasvim moguce:

20
abcdefghijklmnoprst
uvwxyzabcdefghijklmn
opqrstuvwxyzabcdefgh
ijklmnoprstuvwxyzab ;D
[/q]
Pa ona ti je i rekla da postoje test-primeri na kojima ce puci na vremenu, a posto ti ne znas kakvi su test primeri moras misliti na najkomplikovanije (a koliko je shta komplikovano zavisi od algoritma).
Btw, za ovaj tvoj komentar sam pomislio ili da si pospan/umoran postovao ili da zafrkavas Sanju :)

Program se resava brute-forceom (odnosno takvo resenje prolazi), samo ocigledno tvoja ideja ili kodiranje ima propust. Ne treba ti nikakva tehnika, samo probaj sve mogucnosti, a posto to na neki nacin i radis, onda si na pravom putu.
b
boba5551
inace, ono sto ti ja preporucujem, ti ako hoces poslusaj :), jeste da otkucas permutacije i onda za svaku permutaciju molekula pozoves resi. Meni bas ovako nije jasno zasto ti probas sve mogucnosti (ne kazem da ne probas, samo meni na prvi pogled nije jasno), pa ako ti ne mozes da pokazes da probas sve, onda ti je moj savet da otkucas permutacije i onda ces bar jedan deo otkloniti, odnosno bices siguran da nije do rasporeda nego je od procedure resi. Ako ti budes radio, kad sredis javi shta ti onda prolazi.

EDIT: Tebi recimo za 10. test primer program daje preko 100, a resenje treba da bude 32. Proveri ono mnozenje u resi kod updateovanja max.
s
sanja
Oki... ja se izvinjavam sto sam pogresno tumacila tvoje redove. U svakom slucaju, nije ti dobra ideja da ne mislis na sve moguce test-primere. Mislim, ok, resenje koje prolazi na takmicenju za izvesne slucajeve je dobro za skupljanje poena, ali primeri se obicno konstruisu tako da obore dobar deo brute-force resenja (u ovom slucaju ocigledno ne, ali ovo je ionako zadatak s okruznog takmicenja), da za neka osrednja daju izvestan broj bodova i da dobijes svih 100 za brzo resenje.
b
boba5551
Ja sam gledao test primere i nema onih za koje ce se program izvrsavati duze nego sto je dozvoljeno, ali i te kako taj program nece proci na tome sto si ti dala ili krajnje jednostavno
20
A...A
A...A
A...A
A...A
n
nemanja90
Ma ja sam kreten, tek sad sam video da pise:
- ako je molekul horizontalno smešten on mora biti orijentisan s leva na desno.
- ako je molekul vertikalno smešten on mora biti orijentisan odozgo na dole.
- Prvi i poslednji atom bilo kog molekula ne može biti presecni atom.

Kad se to prepravi, onda radi.
s
sanja
Super :)
Opet, ja ostajem pri tome da treba da kodiras resenja koja ce da prodju za sve test primere, a ne samo za neke (osim kao ne skupljas poene tj. ne znas bolje da resis zadatak) :)
n
nemanja90
To stoji, ali je ovo najbrze sto mi je palo na pamet, iako bih voleo da sam se setio neceg boljeg.