JavaRush/Java блог/Архив info.javarush/Алгоритмические задачи
Joysi
41 уровень

Алгоритмические задачи

Статья из группы Архив info.javarush
участников
Сильный конек JavaRush - изобилие практики, что сильно способствует закреплению данного на лекциях материала. Здесь 95% задач с уклоном в практику написания прикладных или серверных программ. Это здорово закрепить на практике поданные на лекциях материалы (коллекции, дженерики, массивы, многопоточность и т.п.) или поэтапно создавать и рефакторить задачи со множеством классов и их взаимодействия (big-и). Как глоток свежего воздуха встречаются алгоритмические задачи (все, наверное, вспоминают последний бонус 20го уровня, построения бинарного дерева-списка), но их число не велико. Оно и понятно, курс посвящен прикладной практике, а не алгоритмике (которая требует гораздо больше теории кибернетики и математики). Тем, кто в чем то похож на меня в плане иногда немного отвлечься и потренировать больше математические навыки в программировании, рекомендую http://codeforces.com/ . Тамошние задачи можно решать (помимо прочих языков программирования) и на Java 7/8. Пул задач (помимо них устраиваются и соревнования), доступен на http://codeforces.com/problemset . Помимо них есть и соревнования и т.п. 100% принимает решение в единственном java-файле c использованием пакета по умолчанию (то есть нет java-файле указания package) и точкой входа public static void main(String[] args). Другие варианты отправки решения я не пробовал. Приведу пример самой простой задачи ( http://codeforces.com/problemset/problem/1/A ) с решением (воспринимайте как тестовый пример), чтобы могли использовать как болванку при решении других: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class task1A { /* Театральная площадь в столице Берляндии представляет собой прямоугольник n × m метров. По случаю очередного юбилея города, было принято решение о замощении площади квадратными гранитными плитами. Каждая плита имеет размер a × a. Какое наименьшее количество плит понадобится для замощения площади? Разрешено покрыть плитами большую поверхность, чем театральная площадь, но она должна быть покрыта обязательно. Гранитные плиты нельзя ломать или дробить, а разрешено использовать только целиком. Границы плит должны быть параллельны границам площади. Входные данные В первой строке записано три целых натуральных числа n, m и a (1 ≤ n, m, a ≤ 10^9). Выходные данные Выведите искомое количество плит. */ public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String[] s=reader.readLine().split(" "); long n = Long.parseLong(s[0]); long m = Long.parseLong(s[1]); long a = Long.parseLong(s[2]); reader.close(); long cntSide1 = n/a + (int) Math.signum(n%a); long cntSide2 = m/a + (int) Math.signum(m%a); System.out.print(cntSide1*cntSide2); } } После создания программы и самостоятельного ее тестирования - загружайте файл на сайт, проверка начнется в ближайшее время и вы можете наблюдать за ее процессом. Дополнительно можно посмотреть тестовые данные в процессе проверки и использовать их для коррекции программы в случае провала одного из тестов. P.S. Если администрация сочтет рекламой стороннего ресурса - можете удалить. Хотя лично я считаю, что дополнительная зарядка мозгам в плане алгоритмики не помешает. P.S.S. Если есть другие подобные ресурсы - пишите в комментариях (лучше в развернутых - плюсы, минусы и примеры решенных тестовых задач для легкого старта другим).
Комментарии (8)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
blacky
Уровень 23
4 июня 2016, 15:37
acm.timus.ru хороший ресурс — там олимпиадки на различные темы. Писать решение можно на любом языке.
Joysi
Уровень 41
4 июня 2016, 18:39
Спасибо. Язык в таких задачах не сильно принципиален (возможно, только если функциональные примочки использовать, не знаю. Возможно еще интерпретируемые языки чутка тормознее перед компиляционными). Там больше решает применяемый алгоритм.
P.S. Все таки приятно решить задачку, особенно если ее решило до тебя чуть больше тысячи человек (при условии, что более простые задачи решило под 40к участников). Попробую замахнуться на задачу, которую решило меньше 1000 :). (Я про codeforces).
HansNoodles
Уровень 31
3 июня 2016, 13:46
Очень скоро JavaRush будет существенно обновлен. Работа ведется буквально день и ночь, будут и алгоритмические задачи, и плотная работа с популярными фреймворками, и многое-многое другое. Много нового для себя откроют как новые юзеры, так и те кто прошел уже все 40 уровней.

А ресурсов действительно много. Ни в коем случае не буду отговаривать от их использования, как источника дополнительной практики.
mrserfr
Уровень 33
3 июня 2016, 13:48
Это очень интересная информация, спасибо, ждем
Joysi
Уровень 41
3 июня 2016, 14:50
Вот это хорошая новость!
Truefirefox
Уровень 40
4 июня 2016, 03:56
Надеюсь это знаменательное событие произойдет до того, как моя подписка закончится
Joysi
Уровень 41
8 июня 2016, 22:25
Был бы весьма благодарен, если бы чутка подробнее описали, что будет (а вдруг еще 40 новых уровней, как где-то писалось): какие темы, возможно подробнее про новые типы заданий, какие фреймворки затронете.
Понимаю, что не все понятно по реализации, но тем не менее, без указания сроков, пожалуйста, приподнимите тайную завесу :)
abbath0767
Уровень 36
3 июня 2016, 13:16
господи, да подобных ресурсов пруд пруди, кодварс, код ката, проект эйлер и прочие.