|
6 / 6 / 5
Регистрация: 29.01.2015
Сообщений: 467
|
|
Как научиться олимпиадному программированию15.03.2016, 07:08. Показов 6267. Ответов 63
Метки нет (Все метки)
Что делать, если я уже более 5 лет пишу код в веб, c++, но, я не умею решать задачи из олимпиад? Какие сайты изучить?
0
|
|
| 15.03.2016, 07:08 | |
|
Ответы с готовыми решениями:
63
Можно ли научиться программированию??? Хочу научиться программированию. Какой язык выбрать?
|
| 18.03.2016, 12:33 | |
|
Не по теме: Shamil1, Fulcrum_013, бокс по переписке продолжается.
0
|
|
| 18.03.2016, 12:53 | ||
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 18.03.2016, 14:25 | |||
|
Добавлено через 24 минуты Добавлено через 2 минуты
0
|
|||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
||
| 18.03.2016, 15:52 | ||
|
Видимо, Вы не правильно поняли суть этой абстракции. Объект либо можно, сворачивать, либо нельзя. Промежуточных вариантов типа "свернуть часть" или "второй свежести" нет. "Или четных/нечетных?" В этом случае надо поменять функцию (ведь нам нужен результат другого типа - не число, а пара чисел). Вы, кстати, сделали то же самое: поменяли функцию с "Max<<Array[i]" на "(i&1?MaxOdd:MaxEven)<<Array[i]". "Или матрицы по двойной спирали?" В этом случае надо поменять выборку. Полагаю, что Вы бы тоже поменяли выборку с "for (int i=0;i<Array.Length;i++)" на что-нибудь, что выдавало бы элементы массива в нужном порядке.
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||
| 19.03.2016, 07:37 | |||||||
|
В реальной же жизни придется программировать топологию выборки на каждом шагу. Причем далеко не всегда результаты пригодны для записи их в 1D массив индексов, хотя бы потому что придется записать и индексы соседей, участвующих в расчете функции. Почему и привел пример с 4-х связной топологией. А если связность/количество слоев связности меняется в зависимости от значений конкретного элемента или даже состояния самого счетчика? А если при этом от значения счетчиков меняется еще и алгоритм обхода выборки как в огромном количестве алгоритмов работающих на 2D растре? Не проще ли сделать какой либо более менее универсальный и легко расширяемый набор счетчиков который можно пользовать прямо в алгоритме обхода, причем с возможностью взаимодействия алгоритма со значением счетчиков, а то и возможностью выбора счетчиком алгоритма расчета следующего шага? Вся песня в том что все это ФП растет от первого английского компа - Колосса. Который проектировался и использовался для одной задачи - расшифровки шифрограмм записанных на телеграфной перфоленте. У него других методов обхода быть просто не могло. При этом учитывая что расшифровка велась брутфорсом, т.е. перебором всех возможных ключей с подсчетом количества совпадений по всей ленте, и тот факт что шифр постоянно усложнялся, таки приходилось лепить функцию поверх функции, не удивительно что основной задачей их было оценить возможно ли вообще при дальнейшем усложнении шифра, доделкой блоков вычисления поверх существующих пользовать тот же комп, или лучше сразу начать готовить его на свалку и изобретать что то новое, типа польских 2D шифрокарт, которые накладываясь друг на друга со смещением отсекали группы неприменимых ключей. Дальнейшее развитие компьютерной техники было связано в первую же очередь опять же с шифробаталиями между вчерашними союзниками (т.е. те же грабли - отсюда и все это лямбда-свистопляска и необходимость доказательста вычислимости, для универсального же компьютера вычислимость доказана один раз - определением УМТ), и счету артиллерийских таблиц (ну тут как бы тоже банальная табуляция функции нескольких независимых переменных), причем все это естественно в сферическом вакууме от реального мира, в котором нужно отслеживать объекты и моделировать их взаимодействие и перемещение. Появилась RAM а тем более хранение данных в RAM и алгоритмы использующие случайный доступ и все это ФП оказалось проще выбросить чем перекрутить 2 и более D топологии под свертки. Кстати что самое интересное это понимали еще создатели первого компа с электронной памятью как данных так и программы Z4 так и первого в мире высокоуровнего языка Планкалкуль, И что самое интересное, этот комп использовался для создания первого в мире станка с ЧПУ (1944-ый год). А когда в этом плане опомнились лентомататели? 60-е а то и 70-е? Не удивительно что Германия до сих пор лидер в плане средств промавтоматики и робототехники. Потому что они этим лентомотанием просто не занимались. Хотя бы потому что тут другие задачи - параллельный расчет функций с взаимозависимыми параметрами. Да для примера, решите как систему линейных уравнений методом Гаусса средствами ФП. Решить в принципе можно, но придется так с бубном поплясать что проще в разработке и эффективнее при вычислениях, таки методами с системой состояний и указателями. И С++ тут будет гораздо эффективнее чем Haskell а тем более Lisp. Я же не против пользования каллбэками там где они нужны. Например при обработке изменения состояний внешних устройств, ну или оповещениях между объектами. Но как бы при чем тут куцие обрубки объектов под названием замыкание? А тем более солитеры из таких обрубков? Добавлено через 28 минут С начальным значением/без начального значения. Индикаторная процедура тоже менялась. По одним из них ключ тоже входил в сообщение по другим нет. Да для такой узкоспециализированной и бесполезной задачи как расшифровка шифрограмм полученных путем параметрической замены символов таки все случаи жизни. Но если будет банально перестановка символов... а не замена кода.... Добавлено через 22 минуты Добавлено через 10 минут Поэтому взаимонезависимыми черными ящиками счетчик и алгоритм обхода могут быть исключительно в сферическом вакууме с квазистационарной степенью анизотропности вращения ротора в потоке дивергенции гравискаляра, при условии отрицательности постоянной Авогадро. Добавлено через 22 минуты Опять же. Есть параллелить нужно там где нужно. К примеру сколько уже бьются над задачей толковой многопоточной компиляции? т.е. пытаются разделить что то на микроуровне, но остается общий словарь типов глобальных переменных и т.п. запись в который требует лока. При этом напрочь забывая что компиляция каждого модуля - по сути отдельная задача, и чтобы при современных мощностях процу надо было бы ускорять компиляцию, то размер кода должен быть таким что количество модулей превысит количество доступных ядер в десятки раз, у каждого из которых словарь свой по определению, должно быть в десятки раз больше количества ядер. т.е. придумали как компиляцию параллелить по большому счету не сейчас, а тогда когда изобрели раздельную компиляцию моулей. По банальной причине. Так быстрее пересчитывать (перекомпилировать) изменения. Ну а линковка не настолько напряжная задача чтобы ее необходимо было параллелить, причем гораздо проще это сделать на старте проги (т.е. динамическая линковка), когда опять же подгрузка каждого модуля по сути отдельная задача, во всяком случае если модуля грузятся однотипно. Нетипичную подгрузку встречал только для OpenGL. т.е. есть несколько задач - считай каждую на своем ядре. Быстрее будет, чем каждую на кучу ядер завешивать причем пытаясь перпендикуляр распараллелить, в результате только растет ожидание на локах и тасксвитчинг.
0
|
|||||||
| 19.03.2016, 10:21 | |||
|
3D модель - весьма консервативная сущность, мало что в ней изменилось за последние 20 лет. Поэтому если мы считаем bounding box(es) суб-мешей - мы можем и должны забить на всякую общность. Задача должна быть решена за час (максимум). И код должен быть компактный и выразительный, без всяких "турусов на колесах". А то
0
|
|||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
||||||||||||||||||||||||||||||
| 19.03.2016, 18:41 | ||||||||||||||||||||||||||||||
|
Посмотрите на свой код:
Ваше дерево само знает, как его обходить. А мне Вы предлагаете написать код, который будет обходить экземпляр любого типа данных, который могут написать в будущем? В C++ тоже есть возможность, использовать функциональный стиль. Для этого ввели функцию std::accumulate. Обратите внимание, что итератор обычно предоставляет создатель класса. Вместо Вашего велосипедного Traverse Вам было достаточно добавить в класс Traverse метод, возвращающий итератор. Преимущества такого подхода по сравнению с велосипедами: 1. Вы сразу получаете доступ к ряду стандартных функций высшего порядка, принимающих итератор. 2. Тому, кто посмотрит на интерфейс Вашего класса, сразу понятно, что делает итератор. А что делает Ваш Traverse и что за traverser ему можно подавать на вход (подойдёт ли мой класс MyClass?) не понятно без дополнительных исследований (кода и/или документации). Добавлено через 7 минут Весь текст, написанный Вами дальше основан на неверных предпосылках и потому лишён смысла. В частности:
Во второй строке написано: для каждой строки row матрицы m ("| row <- m") попарно умножаем ("zipWith (*)") все элементы с элементами вектора и суммируем результаты (sum). А вот код для решения системы линейных уравнений (в рациональных числах, представленных в виде дробей):
Триангуляция: Выбираем опорную строку (с ненулевым первым элементом). Каждую строку умножаем на коэффициент c = a1/ai. Повторяем для подматрицы без первой строки и первого столбца. Выбор опорной строки: пока a1 = 0 убираем строку вниз. Обратная замена: Для удобства сначала разворачиваем матрицу. На каждом шаге заменяем текущий элемент. Ответ: [3 % 2,1 % 2,5 % 2] то есть, x1 = 3/2, x2 = 1/2, x3 = 5/2 Добавлено через 22 минуты p.s. Поменял Double на Rational Добавлено через 14 минут http://ideone.com/Bihfof
0
|
||||||||||||||||||||||||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||
| 20.03.2016, 00:37 | ||||||||
|
последовательности. Если алгоритм перестраивает последовательность то итераторы неприменимы. Мало того, на практике очень часто встречаются задачи синхронного обхода нескольких последовательностей, при которых следующий шаг обхода (выбор следующего элемента), зависит от состояния счетчиков обхода других последовательностей. Добавлено через 4 минуты Добавлено через 25 минут Добавлено через 3 минуты Добавлено через 33 минуты Напомню - абстрактное мышление - способность создавать новые системы отсчета. В ФП система отсчета в последовательности одна. Соответсвенно ФП непригоден для абстракции.
0
|
||||||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
|||||
| 20.03.2016, 00:41 | |||||
|
Зато теперь понятно, почему Вы с таким недоверием относитесь к ФП. Вы просто его не понимаете и не верите, что это работает. - Вжик! - сказала пила, и бревно пополам. - Ух ты! - сказали мужики и положили бревно потолще. - Вжжжик! - сказала пила и ... бревно пополам. - Ого! - сказали мужики и положили рельсу. - Вжж-крях! - сказала пила и поломалась. - Ага!!! - сказали мужики, - То-то же...
0
|
|||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||||||||
| 20.03.2016, 01:57 | |||||||||||||
|
в общем случае
Добавлено через 5 минут И пиляют бородатые русские мужики этой пилой по 10 кубов леса в день каждый. А чукча по 100. Изловчились русские мужики и давай по 20 пилять. А чукча 200. Раздолбали бородатых мужиков на партсобрнии, и давай они по 40 пилять. А чукча 400. Ну в общем приехала комиссия из Кремля смотреть как чукча так ударником производства стал. Ну говорят чукча показывай. Хватает чукча пилу и давай лес валить. - ****ть, - изумилась комиссия, - если бы он ее еще и ВКЛЮЧАЛ!!! Добавлено через 4 минуты Добавлено через 41 минуту Добавлено через 9 минут
0
|
|||||||||||||
| 20.03.2016, 10:18 | ||
|
Есть масса людей усердно изучающих каждую std-вывеску (типа std::accumulate), а некоторые вообще владеют неск языками Я с уважением отношусь к их знаниям, но вот беда - делать ничего они не хотят. Цель - изучать бесконечно, неуклонно повышать свою (безмерно крутую) квалификацию. А конкретные результаты, выход их мало волнует. Этим пусть кто-то другой занимается, ведь овладевать все новыми и новыми знаниями куда легче
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||||
| 20.03.2016, 14:45 | ||||||||||
|
Добавлено через 3 минуты Добавлено через 1 минуту Добавлено через 35 минут
0
|
||||||||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
||
| 20.03.2016, 14:57 | ||
|
Причём, для этого Вам не нужно переходить на функциональный ЯП, так как элементы ФЯП добавляются прямо в C++. Это лямбды, это абстракции высокого уровня (std::accumulate и другие). И для этого Вам не нужно отказываться от ООП, если Вы его используете. Пишите свой класс, а при реализации некого метода используете приёмы ФП. Ведущие ООП программисты осознают преимущество такого подхода. И поэтому в самых популярных ООЯП (Java, C#, C++) с каждой версией появляется всё больше элементов ФП.
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 20.03.2016, 15:38 | ||||
|
Зачем мне посредник, который мало того что пользует кучу Indirect Call там где они не нужны, так еще и отправляет элемент и алгоритм выборки в сферический вакуум относительно самой последовательности и друг друга? А для того чтобы события и т.п. использовть на делегатах мне лямбдо-костыли не нужны. Потому как пользую продвинутый C++ компилятор в котором делегаты нативные, т.е. без всяких std-костылей. Добавлено через 3 минуты Добавлено через 3 минуты
0
|
||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
|
| 20.03.2016, 18:01 | |
|
Fulcrum_013,
Я не вижу смысла что-то Вам объяснять. Всё равно Вы не читаете, а если и читаете, то даже не пытаетесь понять. Я в качестве примера описал Вам одну из абстракций и её использование. Но Вы не можете понять пользу этой абстракции, потому что заняты исключительно придумыванием ситуаций, в которых она не работает. Очевидно же, что нет универсального приёма на все случаи жизни. Точно так же каждый из ООП паттернов имеет строго ограниченную область применения. На каждую пилу найдётся рельс. Я Вам уже писал, что при вызове Aggregate() нет никаких indirect calls. Вы это проигнорировали, а теперь опять выдумываете косвенные вызовы. Тем более, что Вы пишите на С++. В библиотеке STL в подобных методах используются параметры шаблона, компилятор получает полную информацию о типах и, как правило, производит разворачивание (inlining) кода предиката, тем самым полностью исключая затраты на вызов метода. Никаких косвенных вызовов (и никаких "куцых обрубков объекта"). А Ваша реплика "Нормальные люди опорную строку по другому ищут."? Хотели показать, что я плохо знаю алгоритм Гаусса? Но какое отношение к ФП имеет моё знание или незнание этого алгоритма? К тому же в данном случае предлагаемый Вами поиск максимума был бы пустой тратой ресурсов. Ваша аргументация по стилю напоминает шулерство. Вы высказываете какое-то спорное утверждение (например, "у меня обычно связность структур данных с которыми работают алгоритмы гораздо выше нулевой") и выдаёте его за аксиому, не нуждающуюся в доказательстве. А затем делаете из него абсолютно нелогичный вывод: "От ФП при таких раскладах больше вреда чем пользы". Какая связь? И откуда Вы можете знать, если Вы совершенно не знаете ФП. Вы задаёте вопросы в стиле "Вы уже перестали пить коньяк по утрам?". Например "Зачем мне куцый обрубок объекта". И как на него отвечать, если лямбда не является "куцым обрубком объекта"?
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 20.03.2016, 18:58 | ||||
|
Добавлено через 8 минут Добавлено через 16 минут
0
|
||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
|||||
| 20.03.2016, 22:20 | |||||
|
0
|
|||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||
| 21.03.2016, 06:10 | ||||||
|
Добавлено через 3 минуты Добавлено через 45 минут А вот на то же самое с управляемым аккумулятором, по значению которого можно принимать решение о продолжении/выборе следующего элемента при обходе/ сбросе аккумулятора вы хай подняли.
0
|
||||||
| 21.03.2016, 06:41 | ||||
Был курс АЯиП, не пользующийся никаким авторитетом, программирование считалось женской специальностью, а мужчина должен был сидеть с паяльником. Первым делом бы сказали типа
И вот как только такие простейшие вещи будут решены, и все будет аккуратно разложено по полочкам - необходимость в каком-то умничании отпадет сама собой
0
|
||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||
| 21.03.2016, 07:31 | ||||||||
|
Добавлено через 2 минуты Добавлено через 10 минут Добавлено через 41 секунду Добавлено через 1 минуту Добавлено через 24 минуты Аки клаву тоже не айс. И сенсор не ахти, винда его через раз теряет, и печатать на экране тактильных ощущений нет, и виртуальная клава тоже часть места займет. Добавлено через 4 минуты Да и поле зрения по горизонтали больше чем по вертикали. Вобщем единственная разумная альтернатива глобально перейти на японскую/китайску письменность. имеется в виду не иероглифы а направление строк. Строки сверху вниз, скролл влево-вправо.
0
|
||||||||
| 21.03.2016, 07:31 | |
|
Как научиться программировать как БОГ? Задача по олимпиадному программированию Шарики(Задача по олимпиадному программированию) Ищу людей для подготовки по олимпиадному программированию
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|