Добрый день, уважаемое сообщество CF
Хотелось бы знать какие средства языка программирования Java нужно знать, чтобы это было достаточно для решения задач по СП?
Например:
- Массивы
- Строки
- Коллекции ( Set, Map, и т. д.)
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 3993 |
2 | jiangly | 3743 |
3 | orzdevinwang | 3707 |
4 | Radewoosh | 3627 |
5 | jqdai0815 | 3620 |
6 | Benq | 3564 |
7 | Kevin114514 | 3443 |
8 | ksun48 | 3434 |
9 | Rewinding | 3397 |
10 | Um_nik | 3396 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 155 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
10 | nor | 152 |
Добрый день, уважаемое сообщество CF
Хотелось бы знать какие средства языка программирования Java нужно знать, чтобы это было достаточно для решения задач по СП?
Например:
Название |
---|
Я б рекомендовал посмотреть на решения клыкастых спортсменов - чем пользуются они.
Полезно уметь пользоваться встроенными регэкспами, хоть это и не всегда нужно.
Для ряда коллекций важно уметь реализовывать (возможно в анонимных классах) требуемые интерфейсы.
Кроме "Строки" я бы добавил вообще все объекты и интерфейсы связанные с основными структурами данных: Integer, Double, BigInteger, Number, StringBuilder, CharSequence. Класс Math.
Вообще очень важно внимательно изучать возможности API. Чтобы инвенциями в деле бициклизма не заниматься во время соревнований ;-)
В общем главное ввязаться (и по возможности решать не только спортивные задачки) - там разберётесь и, вероятно, много полезняшек найдёте.
abstract class CartesianDrevo<E> implements Externalizable;
class ZachotnoCartesianDrevo extends CartesianDrevo
<? extends Map<? extends Drevo>>
implements Closeable, Listable, Mappable, Drevable;
Не учите человека плохому.
При модификации исходников (не то чтоб длинных, но если тело метода не влезает в 1 экран) некий фрагмент оказывается необходимым забрать в цикл (например для обработки каких-то проблем, выдачи повторного запроса пользователю и т.п.) - и тут оказывается, что фрагмент содержал break/continue (от внешнего цикла или свитча). Брейк оказывается теперь во внутреннем цикле и естественно что и внешняя и внутренняя конструкция ведут себя не вполне адекватно.
Притом такой косяк довольно легко упустить.
Пока метки в одном методе и этот метод состоит из 30-50 строк, ничего плохого в метках нет...
Даже наоборот, попытка избегнуть использования переходов в тех случаях когда они вполне естественны ведёт к достаточно аномальному хотя и структурированному коду...
Да и вообще вся эта полемика goto и вопли насчёт его вреда или пользы - это всё ерунда. Хватит читать этот тред, лучше идти заняться делом. Всё равно ничего существенно нового не будет. ;-)
Уж наверное разработчики Java тоже о "полемике goto" слышали и наверное "стопиццот" раз подумали когда реализовывали такой функционал. Вы не забывайте, что Дейкстра это писал ещё во времена широкого распространения, скажем, фортрана, где меток было много и они обозначались пятизначными числами. В java ситуация несколько иная, не так ли?
Зарезервировано не для того, чтоб никто не пытался реализовать. Это слишком странная идея была бы. Наоборот, чтобы никто не использовал в программе слово, которое в дальнейшем разработчики могут захотеть реализовать.
Я сам на "спортивных" сайтах, начиная с топкодера, стал пробовать свои силы именно чтобы азы java освоить. Сейчас это уже утратило актуальность. Авось и у автора топика всё сложится нормально.
Невнимательность погубила. Я понимаю, что автор видимо только начал осваивать Java, но перепутать присваивание со сравнением и при этом написать такой "не тривиальный" шаблон для чтения... это сильно.
Да, Java дала ему написать такое коварное выражение в if, но неужели не "передернуло" ничего внутри за весь контест? Урок на всю жизнь, полагаю.
Просто судя по коду автора складывается ощущение, что он изучал Java по кодам других участников после программирования на Паскале. Поэтому может Вам стоит сперва книжку по основам хорошо прочитать, а уже потом спрашивать про вещи, хорошее понимание которых нужно как раз в олимпиадном применении?
А шаблоны для чтения... Меня больше всего поражает что почти все начинающие спортсмены считают что именно использование какого-нибудь мегаскребучего паттерна их спасёт... Больше всего забавляет пресловутое "implements Runnable"...
А впрочем, если человек даже на аватарку себе Бреда Питта прицепил, то наивно ждать что его программы будут блистать неповторимостью, оригинальностью... ;-)))
Это удобно и быстро, в отличие от Scanner который я в вашем коде увидел. Вы ведь в курсе что он работает гораздо медленнее чем описанный в шаблоне вариант?
UPD Не, вы что, правда считаете что можно было с такими ограничениями TLE из-за Scanner получить? ;-)
BufferedReader я отнюдь не избегаю - по-моему даже однажды хотел его применить - в задаче про тетрис - правда до меня дошло что в этой задаче у меня тормозит не ввод а вывод (тем не менее она сдалась почему-то).
И даже если сразу поймете что будет тормозить - потратите лишних 3 минуты на написание ввода.
Вам не кажется что проще всегда использовать шаблон, к которому привыкаешь?
Кто вам дал право судить меня? Кончайте разводить здесь холивар.
Любой пишущий посты в собственный блог или комментирующий чужие, или даже просто участвующий в соревнованиях должен быть готов к тому что его могут и похвалить, и предать суровому порицанию... ;-)
Насчет того, что слил контест, я только через час после начало контеста сел решать задачи, и то на 20 мин. Так что, не нужно так писать.
Среди всех этих порицаний вы можете заметить ценный совет:
Оставьте на время "удобные паттерны", особенно если не понимаете их... сосредоточьтесь на изучении API. Первая задача решалась в одну строчку с использованием String.compareToIgnoreCase... Это был отличнейший шанс дёрнуть всех пишущих на C++, кажется... ;-)
Особенно на первых порах важно побольше писать ручками и поменьше копировать...
00:07
00:13
00:55
Если быть точным, то мультик я пошёл смотреть когда три первых задачи сдал в первый раз - т.к. по двум последним задачам идей не было. А потом на ноуте выскочило сообщение что решение почелленджено и мультик был поставлен на паузу на какое-то время оторвался чтоб её добить... Принято?
Принимается.
Тогда будем надеяться что в четверг (или когда там след. контест) будет возможность более удачно выступить!