Loading...
enevlogiev avatar enevlogiev 1168 Точки

Така си е. На настолния компилатор имаш повече от 16 MB памет, каквото е ограничението в джъдж.

1
Angeld55 avatar Angeld55 20 Точки

Ами окей,но това в процес на решаване на изпит трябва ли да го вземем под внимание и ако да ,не би ли трябвало да бъде описано в задачата ;? 

0
RoYaL avatar RoYaL Trainer 6849 Точки

Кое не е описано в задачата? Максималните размери на матрицата? Колко памет максимум можеш да използваш? Мисля, че и двете са описани.
Същото като задачата да е "умножи две числа" и в ограниченията да пише, че максимумът на числата е 1,5 млрд-а. Очевидно ако ползваш int за резултатната променлива, може да излезеш извън границите. Но това трябва сам да си го сметнеш, т.е. да вържеш две и две, че 1,5 млрд * 1,5 млрд > int.Max

1
AntonPortenov avatar AntonPortenov 102 Точки

Някакви идей защо дава грешка на последния тест?

И аз съм със същия проблем за време за 5 и 9.

Не виждам как мож да го опростиш повече от това.

http://pastebin.com/vZsk12kY

задачата е на java.

0
MapuH avatar MapuH 35 Точки

Елементите в матрицата ти са int и им задаваш само стойности 0 и 1, това не ти ли прилича на true и false? ;) Оптимизацията, за която аз се сещам е да ползваш матрица от booleans. Така отпада и нуждата да имаш отделна променлива, с която да следиш дали мястото е свободно.

За грешката в логиката: Ако мястото е заето, проверяваш дали отляво има свободни места и ако няма, тогава проверяваш отдясно. Пропускаш възможността и от двете страни да има свободно място като това отдясно да е по-близо до клетката.

1
AntonPortenov avatar AntonPortenov 102 Точки

но ако създадеш Boolean по дефолт тя е null. Идеята с 0 и 1 е, че като кажеш инт[] автоматчно се запълва с 0;

В крайна сметка си пойграх доста и стигнах до правилното решение :)

100/100

http://pastebin.com/vZsk12kY

 

п.с. благодаря за отделеното време :)

0
28/03/2016 23:38:26
g.stoyanov avatar g.stoyanov 776 Точки

Здравей,

Стойноста по подразбиране на булева променлива не е null, ето тук може да видиш стойностите по подразбиране.

Когато за нещо не сте сигурни използвайте документацията - там винаги ще намерите правилния отговор.

Edit: Това важи при инициализация на самия тип променлива (използване на конструктор - new...()), явно вие сте ползвали деклариране на променливата а не създаване(инициализация със конструктор).

Edit2: М/у създаване и деклариране има разлика, хубаво е да разберем каква е тя.

0
28/03/2016 23:54:18
Gesh4o avatar Gesh4o Trainer 305 Точки

Здравей,

Задачата не се решава с матрица, провай да подадеш матрица с максимални размери в judge-a(без каквато и да е друга логика) и ще видиш, че ти гърми директно с OutOfMemoryException. Максималните размери са 10 000x10 000, което общо са  100 000 000 елемента. Дори масива да ти е булев, препълваш директно изискваната памет. Може да прегледаш тези два линка: тук и тук, за да провериш каква памет може да заема една булева променлива, но доколкото видях при Java, казват, че засиви от виртуалната машина, но може евентуално да го подкарат до 1 byte(има доста разминавания в коментарите относно този въпрос), което за толкова елементи пак е много.

Колкото до задачата, опитай се да запазиш в някакъв HashSet заетите места и с него вече обработвай командите - мисля, че това би ти помогнало с тези два теста конкретно. Надявам се коментара да е полезен.

Поздрави ! :)

2
MapuH avatar MapuH 35 Точки

Добро уточнение, защото като се види условието и картинката, човек някакси по презумция тръгва да прави решение с матрица. При мен си мина с пълна оценка решение с матрица, но явно е било късмет, сигурно няма такъв тест с максималните размери.

1
Gesh4o avatar Gesh4o Trainer 305 Точки

Аз тази задача я имах на изпита по Advanced C#, където единственото парче незакоментиран(ака // ...) код беше именно инициализацията на масива. Подавайки това видях, че единственото, което може да ми счупи програмата е инициализацията на масива. След което подадох в jugde-a масив 10 000 х 10 000 и директно ми изгърмя с OutOfMemoryException, който се вижда с нулевия тест. А ти иначе тази задача на Java ли си я решавал, та си минал всички тестове?

Поздрави! :)

0
30/03/2016 07:34:43
MapuH avatar MapuH 35 Точки

Да, на Java, забравих да уточня. Все пак да кажа, че минава на ръба на time limit-a и то май от втория опит чак стана :). Някой ден като нямам какво да правя ще седна да мисля по-умно решение.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.