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
4313
 i  Тема перемещена из форума «Computer Science» в форум «Олимпиадные задачи (CS)»
Причина переноса: не указана.

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

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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