2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Нужна помощь в подготовке к олимпиадам
Сообщение03.09.2013, 20:55 


04/06/12
37
я хотел поинтересоваться насчет студенческих олимпиад по программированию, а именно мне нужны материалы и, в первую очередь, советы бывалых.
помогите,пожалуйста кто чем может

 Профиль  
                  
 
 Re: Нужна помощь в подготовке к олимпиадам
Сообщение04.09.2013, 12:13 
Аватара пользователя


22/09/09

1907
У меня сохранились материалы (и впечатления) от Intel® Threading Challenge 2008. Интересует? (Там участвовали не только студенты.)

 Профиль  
                  
 
 Re: Нужна помощь в подготовке к олимпиадам
Сообщение04.09.2013, 15:42 


04/06/12
37
bin
очень интересует!
еще можете рассказать как Вы готовились к ним и по каким книжкам..
на самом деле я преследую цель научиться грамотно программировать.
можете рассказать как Вы, скажем, раскачались как программист?
буду очень признателен

 Профиль  
                  
 
 Re: Нужна помощь в подготовке к олимпиадам
Сообщение04.09.2013, 17:53 
Аватара пользователя


22/09/09

1907
iknow
Как программист я раскачивался в конце 1970х в МГУ, который окончил в 1980. Сейчас этот опыт имеет только исторический интерес :D К 2008 у меня был достаточный опыт, так что специально к Intel® Threading Challenge 2008 я не готовился. Должен предупредить, что придерживаюсь умеренно консервативных взглядов, как на "софт", так и на "железо": не склонен каждые полгода менять комп, только потому, что появились более быстрые модели, обновлять версии инструментальных программ, потому что они теперь и кофе варить научились (т.е. появились опции, которые мне не нужны). Жалко не денег, но времени на сборку, установку, конфигурацию, отладку и привыкание. В начале 1980х работал на Искрах, Электрониках, СМ-4 (аналог PDP-11), ЕС ЭВМ (IBM 360/370). В середине 1980х постепенно перешел на IBM PC, где работал под MS DOS версии 3 до 1990 г. Потом 10 лет работал в основном на Макинтошах. И на Windows перешел только тогда, когда они достаточно улучшились в 2000 г. Сейчас у меня два десктопа Pentium-4 под Windows XP (иногда, когда нужно, работаю под Линуксами, их у меня целая куча). Современный многоядерный покупать не тороплюсь - опять же жалко времени, хотя чувствую, что пора :-) В отношении языков программирования мое глубокое убеждение, что ничего лучше ОО Паскаля и ничего лучше IDE Delphi-7 (Kylix 2 для Linux) пока не придумали (когда нужно, использую встроенный ассемблер). Так как в основном занимаюсь научными исследованиями, то такой консерватизм вполне сочетается с известным консерватизмом, принятым в фундаментальной академической науке ;-)

Из сказаного будут понятны принципиальные проблемы, с которыми я осознанно столкнулся на интеловском конкурсе. Этим международным конкурсом устроители преследовали цель продвижения многопоточных технологий, в частности, своего пакета TBB. За его использование в решениях начисляли дополнительные очки. Очки начислялись и за использование другого интеловского софта. Т.о. все, кто работал на С$++$ и Фортране, получали фору. Хотя на Фортране, сколько помню, никто из участников не работал. Один из участников (был в группе лидеров) делал задания на оригинальном С-образном языке, продвигаемым его фирмой. Ограничение в условиях конкурса на язык было только одно - компилятор должен быть доступен разработчикам, такое же ограничение было и на использование сторонних библиотек. Думаю, что при организации олимпиады устроители обязательно должны рассмотреть вопросы о допустимых языках и библиотеках в качестве первоочередных.

Конкурс длился целый год: в начале каждого месяца на сайтах ISN (Intel Software Network - см. Википедию) публиковалось очередное задание, которое надо было отослать в виде исходного кода в конце месяца. Оценки выставлялись за скорость счета и по нескольким другим критериям (если интересно, посмотрю в своих архивах их список). Мне было интересно убедиться, что Delphi-7 не медленнее интеловского С$++$. К десятому заданию я прочно держался на пятом месте - подняться выше мешала упомянутая фора других лидеров гонки.

Устроители предоставили очень интересную возможность обсуждать конкурс в форумах на сайтах ISN (русском и английском, про другие не знаю), при этом за активность в этих форумах также начислялось небольшое количество очков. Активность была очень высокой. Правда, устроителей и, в частности, судей несколько раз припирали к стенке, и им приходилось оправдываться. К такому надо быть готовым, организуя олимпиаду. Так как мои проф. интересы лежат в области теории графов, мне наиболее интересны были задания из этой области. Кажется, шестое задание (если интересно, попробую найти список заданий) состояло в том, чтобы определить, является ли граф грациозным. Большинство, как порядочные тормоза, решили эту задачку полным перебором, но нашелся один умный участник, применивший эвристику, взятую им с потолка (сам на форуме признал). Для набора тестовых графов эвристика сработала, и он занял первое место в этом туре. Судьям пришлось попотеть, объясняясь с возмущенными участниками. При этом не первый раз возникал вопрос - это конкурс по программированию или по математике? Т.к. не все задания были прозрачны с математической точки зрения, некоторые требовали серьезной мат. подготовки и нетривиальной математической проработки решения. (Это очень серьезные вопросы для любой подобной олимпиады).

Пожалуй, пока все, что вспомнил с ходу, если интересно и по теме, то продолжу. А может, будет лучше, чтобы я отвечал на вопросы? В заключение назову известные мне источники, где можно найти интересные на мой взгляд задания для олимпиад:

1) Ч.Уэзерел, Этюды для программистов, М.: Мир, 1982.
2) С.Окулов, Программирование в алгоритмах, М.: Бином, 2004.
3) M. I. Trofimov. An optimization of the procedure for the calculation of Hosoya’s index. J. Math. Chem., 8:327–332, 1991. (Эту мою статью о труднорешаемой машиной задаче главный судья конкурса выбрал для задания на региональный конкурс в Индии, не знаю, состоялся ли он :D ).

 Профиль  
                  
 
 Re: Нужна помощь в подготовке к олимпиадам
Сообщение04.09.2013, 18:42 
Аватара пользователя


31/10/08
1244
iknow
Надо знать математику. Желательно знать её глубже чем то, что дают в ВУЗе. Разные конкурсы имеют свою специфику.
Тренировка простая берём и решаем задачки прошлых лет. В интернете можно найти задачи с разных конкурсов. Их много. В моё время интернета не было и задачи хранили на листочках.

Собственно такая тренировка позволяет решать любую задачу. А вот если хотите выиграть, то надо ещё побороть себя и научиться решать задачи быстро. А ведь бывает так что задача тупо на, то что надо набрать более 20 вариантов условий. Нет ни какого хитрого решения, а только просто перебор вариантов. Помниться на какой-то олимпиаде 3 задачи из 4 были такими в результате больше 2-х решил мало кто. Тупо не успели по времени, а победитель решил только 3.

 Профиль  
                  
 
 Re: Нужна помощь в подготовке к олимпиадам
Сообщение04.09.2013, 19:48 
Заслуженный участник
Аватара пользователя


08/11/11
5940
Для начала, узнайте, есть ли в Вашем университете кружок по олимпиадному программированию. Всяко лучше, чем одному заниматься. Может быть, есть в каком-то другом университете в том же городе. Поскольку многие соревнования командные, нужно найти команду и регулярно тренироваться вместе.

Теоретическая подготовка: Шень, "Программирование, теоремы и задачи"; Кормен, "Алгоритмы: построение и анализ" (это то, что я читал, есть, наверное, еще много хороших книг). Но главное – это решать задачи. В интернете полно архивов задач с системой автоматической проверки. Например, acm.sgu.ru, topcoder, и еще целая куча. Например, можете здесь посмотреть: http://codeforces.ru/blog/entry/512.

Главная проблема – то, что это занимает время. Нужно набивать руку, писать понятный код (для себя и сокомандников), изучать новые алгоритмы и учиться быстро и без ошибок писать реализации. Ну и математическая подготовка, конечно, нужна, чтобы хоть сколько-нибудь нестандартная задача не вызывала проблем. В любом случае, речь идет о сотнях и тысячах сданных задач. Полезно также смотреть на чужие решения (например, на topcoder). Некоторые участники очень красиво и понятно пишут, особенно красные.

 Профиль  
                  
 
 Re: Нужна помощь в подготовке к олимпиадам
Сообщение04.09.2013, 20:06 
Аватара пользователя


22/09/09

1907
Pavia
Полностью с Вами согласен, что "Надо знать математику", причем чем глубже - тем лучше! И не только для конкурсов. Такое знание крайне полезно не только для любой естественно-научной и техническо-инженерной деятельности, но даже и для гуманитарной (тому есть множество примеров). Однако если конкурс не совсем по математике, то как-то странно смотрится, когда основные сложности заложены в математике. ИМХО многим устроителям следует более ответственно делать свою работу. Возраст математики не одна тысяча лет, возраст программирования - несколько десятилетий, и, несмотря на интенсивное развитие программирования, накопленный опыт все еще очень мал, поэтому гораздо проще подловить на чисто математическом моменте, чем на программистском. А ведь по уму, от участника олимпиады по какой-либо дисциплине в первую очередь требуется показать свое мастерство именно в этой дисциплине (пусть и в очень узкой области - многоборье особый случай, не про то здесь речь): если устроен конкурс по выпеканию блинчиков, то не заставляйте участников варить борщ и бульон из ласточкиных гнезд, несмотря на то, что многие справедливо сочтут умение варить борщ более важным для семейной жизни, а бульон из ласточкиных гнезд - это экстра-класс французкой кухни. Зачастую же получается, что победители математических соревнований почти автоматически становятся победителями и соревнований программистов. При этом вижу, что далеко не все талантливые математики так же хорошо умеют программировать. Чисто прагматически: давайте не будем заявлять, что программирование - наука не менее сложная, чем математика. Более того, давайте приравняем программирование к сантехнике, но чтобы, при этом, как на конкурсе сантехников, не требовалось ничего сверх элементарных знаний по математике. Тогда и только тогда конкурсы программистов будут иметь смысл, как имеют смысл конкурсы сантехников. А иначе имеем профанацию, сейчас слишком частую. В итоге спутники не долетают до Марса, ракеты не выходят за стратосферу, на терминалах крупнейших аэропортов неразбериха, хакеры обваливают биржи - и все это от кривого софта. Я хочу сказать, что если со всех сантехников потребовать в первую очередь углубленного знания математики, то все мы будем сидеть без воды.

 Профиль  
                  
 
 Re: Нужна помощь в подготовке к олимпиадам
Сообщение04.09.2013, 20:53 
Аватара пользователя


31/10/08
1244
bin
Есть и такой конкурс. Правда я забыл как он называется.Вроде аббревиатура была из 4 букв.
Конкурс мировой, проходит раз в год. Длиться неделю, хотя победители укладывались в 36-90 часов. Это потому что мировая команда разные часовые пояса, пока одни члены команды спят другие решают.
Задачи не по высшей математике, но достаточно трудные. Но ограничений на решения нет можно решать и с высшей математикой.
Есть алгоритмические задачи есть задачи на знание системы и языка.

 Профиль  
                  
 
 Re: Нужна помощь в подготовке к олимпиадам
Сообщение05.09.2013, 14:03 
Аватара пользователя


22/09/09

1907
Pavia
Наверное, собрать такую команду очень не просто? ИМХО это уже проф. спорт, где хороший спортсмен $\neq$ хороший программист.

 Профиль  
                  
 
 Re: Нужна помощь в подготовке к олимпиадам
Сообщение08.09.2013, 16:58 


04/06/12
37
спасибо большое,было очень интересно все прочитать!
еще вопрос:
какие книжки посоветуете по c++? еще желательно ссылку, чтоб скачать сам c++...

 Профиль  
                  
 
 Re: Нужна помощь в подготовке к олимпиадам
Сообщение08.09.2013, 22:15 
Аватара пользователя


22/09/09

1907
iknow в сообщении #761712 писал(а):
какие книжки посоветуете по c++?
1) Скотт Мейерс, Эффективное использование С++. 50 рекомендаций по улучшению ваших программ и проектов, М.: ДМК, 2000.
(ИМХО, приговор С/С++: 50 аргументов, почему этот язык нужно быстрее забыть)
2) Брюс Эккель, Философия С++, Введение в стандартный С++, 2-ое изд., СПб.: Питер, 2004. (Ранее заявлялось, что С/С++ не содержит никакой философии, сплошная практика :-) )
3) Эндрю Троелсен, С# и платформа .NET, СПб.: Питер, 2004. (Советую обратить внимание на Стр. 30, где перечислены проблемы С/С++ и др. языков)
4) Крис Касперски, Фундаментальные основы хакерства. Искусство дизассемблирования, М.: СОЛОН-Пресс, 2004. (Стр 142, оценка хакера С++: "очень кривой и тормозной код".)
5) Языки программирования Ада, Си, Паскаль. Сравнение и оценка, Под ред. А. Фьюэра, Н. Джехани, М.: Радио и связь, 1989.
И конечно авторский "краеугольный кирпич":
6) Б.Страуструп, Язык программирования С++. Спец. издание, М.: ООО Бином-Пресс, 2004.
-- Делайте Ваш выбор ;-)
iknow в сообщении #761712 писал(а):
еще желательно ссылку, чтоб скачать сам c++...
Попробуйте http://software.intel.com/en-us/blogs/2013/01/03/free-intel-c-compilers-for-students-and-related-parallel-programming-tools, а далее Гугл Вам в помощь...
Желаю успехов!
А еще советую:
Д.С. Платт, Софт - отстой! И что с этим делать?, СПб-М.: Символ-Плюс, 2007.
(Не про С, но про времена, когда была мода на С.)
А эти книги будут полезны и не только для С:
Роберт Седжвик, Фундаментальные алгоритмы на С, части 1-4, часть 5, СПб: ООО ДиаСофтЮП, 2003.
Забыл про еще одну проблему: сейчас ведь все должно быть многопоточным, С++ нужны для этого костыли типа TBB. Из книг, что под рукой:
1) Richard Gerber, Aart J.C. Bik, a.o. The Software Optimization Cookbook, Intel-Press.
2) Shameem Akhter & Jason Roberts, Multi-Core Programming, Intel-Press.

 Профиль  
                  
 
 Posted automatically
Сообщение04.11.2013, 01:57 
Основатель
Аватара пользователя


11/05/05
4312
 i  Тема перемещена из форума «Computer Science» в форум «Олимпиадные задачи (CS)»
Причина переноса: не указана.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: gris


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group