Author |
Message |
|
SmokiB wrote:Dali vaa godina ke ima Makedonska olimpijada? Gledam deka nema staveno vo delot na natprevari za 2018 godina.
Ako ima koga ke bide stavena listata na pokaneti ucesnici?
Ќе има Македонска Олимпијада, само не е објавено на МЕНДО бидејќи не е познат датумот. Тоа ќе биде објавено на сајтот на ЗИМ ( http://cs.org.mk/index.php/natprevari/srednoobrazovanie/makedonskaolimpijada-informatika ), искрено незнам кога бидејќи не сум вклучен во одлучувањето за тоа. (Колку што наслушнав за време на државниот натпревар, има многу други натпревари во април па се бара соодветен датум)
Отприлика секоја година има по 20-тина учесници, а тоа можеш да го видиш и по резултатите од претходните олимпијади (на пример, во делот натпревари на МЕНДО)
|
|
|
BRabbit wrote:Да не знае некој што е проблемот? Ги наоѓам сите страни sqrt((x2-x1)^2/(y2-y2)^2) и после само со питагорова теорема ги споредувам само на првиот тест пример работи.
Има повеќе проблеми. Еден е начинот на кој споредуваш реални броеви со операторот "==". Види тука зошто не може така: http://mendo.mk/Lecture.do?id=21 (делот реални броеви).
Втор проблем е што имаш неколку грешки во програмата. На пример, највпечатливата е дека додаваш повеќе од N елементи во S (практично страна за секој пар од точки), а потоа со трите for циклуси разгледуваш само N од нив (i, ј и k одат до N).
Не сакав да поправам за да те насочам повеќе да размислуваш на следниот начин, каде што немаш толку комплицирани услови (како оној голем if и слично).
|
|
|
MODDI wrote:Напишав како што ми рековте но повторно истите примери неработат
Јас пробав со програмата што ја имаш дадено горе (copy/paste), и со промената "int a, b" -> "int a = 0,b;" што ја споменав, решението работи на сите примери на МЕНДО.
|
|
|
MODDI wrote:Значи ја решавам задачава, го испраќам кодот ми враќа грешка во два случаеви го зимам случајот 9 и во CodeBlocks враќа се како што треба а на Мендо повторно дава дека е грешка. Помош!?!
Имаш неиницијализирани променливи/вредности (таму во меморија може да има запишано било што). Не можеш да имаш наредба a=max(a, X[i])) а "a" да нема почетна вредност.
Замени "int a, b" со "int a=0, b" на пример и би требало да работи.
|
|
|
MODDI wrote:Значи кодов знам дека ми паѓа на време но работи во сите случаеви па некоја идеја да го намалам времето или треба некој друг начин. Малку помош?
Па, тој делот со подредувањето (двата вгнездени for циклуси) можеш да ги замениш со sort(A, A+N) и reverse(A, A+N). Тоа е и полесно да се напише.
Понатаму, за zbir и razlika користи нешто како long long наместо int. Вака:
|
|
|
ThePopivanov wrote:Ја пишував од ново со BFS од цвеќињата ама па нејќе неможам да си ја најдам грешката :/
Еве поправки. Ако добро сфатив што сакаш да искуцаш, мислам дека не може да ги ставиш така во ред сите на почеток, бидејќи потоа незнаеш со poseteno[][] дали да продолжиш или не (бидејќи секое цвеќе е посебно).
|
|
|
BATIR wrote:Shto treba da smenam vo kodot za da mi raboti?
Kodot ne e dovrsen , ama ne raboti ni dottuka.
Otkako ova kje se sredi shto treba da dodadam?
Fala odnapred
Тука имам два коментара. Прво во однос на идејата "што треба да додадеш?". Замисли дека задачата не ја бараше максималната вредност на растојание до затвореник, туку ти беше дадена вредноста на растојание и ти треба само да провериш дали може да се стигне до излезот така што ќе бидеме на растојание од затвореници кое е поголемо од таа вредност. Ова е лесно да се реши така (исто со BFS)? Епа, конечното решение е да користиме бинарно пребарување на таа вредност. Ќе провериме дали може да се стигне за вредност X, ако може ќе бараме поголеми вредности, ако не помали, итн....
Другиот (многу поважен) коментар ми е во однос на начинот на решавање. Мислам дека не треба да се почнува со решавање без да знаеш што точно ќе ти биде конечното решение. Имено, можеш да изгубиш многу време на пишување на решение со стотици линии код, и потоа да излезе дека тоа воопшто не е применливо. Во случајов можеш да го задржиш делот со BFS, но на овој начин можеш да изгубиш голем дел од натпревар на пишување решение кое на крај ќе освои 0 поени. (Чисто моја сугестија)
|
|
|
ThePopivanov wrote:Средив имав некои мали грешки но ми надминува временски лимит :/
Многу BFS-а се тоа.
Ако ја прочиташ задачата уште еднаш, ќе видиш дека K <= 100, и всушност можеш да почнеш со BFS од тие позиции. Тоа е многу помал број од M*N.
|
|
|
SmokiB wrote:Pomos... Dobivam nadminat vremenski limit na poslednite tri primera..
Па, една финта е да пробаш да го замениш тој for циклусот каде што проверуваш дали е некој број прост со ова
Види како прво проверуваме дали е бројот парен, а потоа a почнува од a=3, и зголемуваме за 2 (за да оди 3, 5, 7, 9, ...)
|
|
|
Hristijandinisev wrote:Може помош за задачата точка од задачите на мендо ја решив на овој начин но ми јавува грешки кога ќе ја ставам таму во CodeMirror, а во Code :: Blocks работи супер!! Фала однапред
Можеби работи на Code::Blocks на неколку примери, но твојата програма има грешки и може да се поедностави.
Види ги поправките.
|
|
|
boolTrue wrote:Ако може хинт, не добивам никакви идеи, успевам само да го поправам за тој тест пример но потоа прави грешка на 5
Ова е по мене најлогичното решение - т.е. како јас би ја решавал.
|
|
|
BATIR wrote:Zdravo . Pls hint. Ne mi izleguva zadacava
Покрај другите проблеми, ако добро разгледав (бидејќи набрзина го пројдов кодот) алчниот алгоритам кој го имаш искористено може да се употреби ако сакаме да најдеме максимален број на емисии (на пример), но не би работел секогаш точно за задачава (каде се бара вкупна должина на тие емисии).
Сепак, бидејќи N е поприлично мал број, не постојат којзнае колку состојби, така да можеш да пробаш нешто вака (и сакав да пробам да го изменам твојот код). Имај предвид дека наместо пар од час и минута, можеш да користиш само еден int (час*60 + минута), понатаму ги пробуваме сите можни емисии како први (со цел да знаеме за следните кога нив може да ги гледаме - т.е. во кој 24-часовен интервал), и потоа од кога ќе го искористиш алчниот алгоритам за активностите, можеш да направиш уште едно разгледување на сите емисии со цел да видиш дали некоја подолга емисија може да замени некоја помала. Ќе повторам, ова работи само бидејќи N е мал број па доколку ги разгледуваме сите емисии како први и слично ќе разгледаме доста од состојбите. Инаку за задачава е пологично нешто како динамичко програмирање.
|
|
|
BATIR wrote:Zdravo, ja kucav Lavirint 2012. Moze hint
Променливата step во програмата ќе ти се менува цело време, таа всушност треба да ја гледаш како дел од состојбата (исто како позицијата red,kol каде што се наоѓаш).
Дополнително, кога се движиме 2-3 чекора напред, треба да провериме да не има некоја пречка измеѓу нив. Нешто вака.
|
|
|
boolTrue wrote:Што треба да сменам во овој код, не минува на 9тиот тест:
Незнам колку решаваш на МЕНДО и дали знаеш, ама можеш да симнеш некој тест случај доколку не ти поминува само на него.
Ако сакаш сам да пробаш да увидиш зошто ти е грешно решението, еве го симнав тестот наместо тебе
Излезот треба да е 2. Ако не успееш, пиши пак во темава и ќе видиме што е проблемот.
|
|
|
SmokiB wrote:Fala mnogu... Nekoj kritiki za kodot, kako bi mozel da go podobram? Ili voa e dobro?
По мене, имаш многу повторување во кодот, поради тоа и имаш направено грешка.
Разгледај тука http://mendo.mk/Training.do?cid=6 предавање "Најкраток пат во лавиринт" и како се прават потезите во програма 16.1 на пример, и пробај да напишеш нешто слично.
|
|
|
|
|