Решаю Задачи Для Стажировки Тинькофф Старт На Python

  Рет қаралды 68,682

PyLounge - программирование на Python и всё о IT

PyLounge - программирование на Python и всё о IT

Күн бұрын

Пікірлер
@pylounge
@pylounge 2 жыл бұрын
Делитесь своими попытками решения в комментариях)
@E1ektr0Fill
@E1ektr0Fill 2 жыл бұрын
5 - бор 6 дейкстра 7 думаю дерево подотрезков. тут не уверен 8 расширенный бор.
@ktoya2131
@ktoya2131 2 жыл бұрын
В 4 можно вести словарь и записывать все, где равно есть
@E1ektr0Fill
@E1ektr0Fill 2 жыл бұрын
@@ktoya2131 Да, 4 примитив. Её разбирать не надо :-)
@ДмитрийКравцов-д3о
@ДмитрийКравцов-д3о 2 жыл бұрын
@@E1ektr0Fill главное не забыть про случай когда блок в блоке
@E1ektr0Fill
@E1ektr0Fill 2 жыл бұрын
@@ДмитрийКравцов-д3о хорошо, перефразирую. Первые 4 задачи - на аккуратность программирования. Считаю, что разбирай не разбирай - аккуратности у человека не прибавиться, если он не аккуратный.
@obkyrush
@obkyrush 2 жыл бұрын
Вроде для лифтов никто не написал решение. Система лифтов - ориентированный граф. Из каждой вершины запускаем dfs и смотрим на какую максимальную глубину он уйдет, в конце возвращаем максимум из глубин. Нужно только правильно обработать петли - лифты вида (a, a), чтобы не попасть в циклы. Сложность квадратичная, но если запоминать результаты для уже посещенных вершин, то будет линейная.
@AlexanderSelyutin
@AlexanderSelyutin 2 жыл бұрын
Удивительно что про граф тут сразу не завалили комментариями. Очевидно решение по минимальному пробегу лифта решает только частный случай.
@MisterTrayser
@MisterTrayser 2 жыл бұрын
@@AlexanderSelyutin да у него большинство решений наивно простые. Если тинькофф смотрит на время работы, то его по любому не взяли
@user-wv2jc4xm7r
@user-wv2jc4xm7r Жыл бұрын
Как-то слишком замудрено, нет необходимости ходить по графу, достаточно динамики вперёд.
@ПавелРубанов-в6х
@ПавелРубанов-в6х Жыл бұрын
можно при построение графа запоминать глубину вершин (скажем если мы вершину А цепляем к вершине B - с глубиной x, то глубина A будет x+1) плюс запоминать самую глубокую вершину. тогда после построения графа уже будет сразу ответ.
@Happy-rj7om
@Happy-rj7om 2 жыл бұрын
Для первой задачи думаю нужно print(max(abs(x3 - x2), abs(y4 - y1))**2) А в Вашем случае abs, наверное, лишний, ибо все равно в квадрат возводится
@zDarkKnightz
@zDarkKnightz 2 жыл бұрын
Задание 1: x1, y1, x2, y2 = map(int, input().split(' ')) x3, y3, x4, y4 = map(int, input().split(' ')) xLeft = min(x1, x2, x3, x4) xRight = max(x1, x2, x3, x4) yDown = min(y1, y2, y3, y4) yUp = max(y1, y2, y3, y4) print(max((xRight - xLeft)**2, (yUp - yDown)**2))
@GliGlock
@GliGlock 3 ай бұрын
Возведение в квадрат ресурсно затратно, чем нахождение наибольшего. В последнем шаге лучше print( max( xRight - xLeft, yUp - yDown)**2 )
@billyknife616
@billyknife616 2 жыл бұрын
Прикол одного теста при проверке в том, то ты не знаешь точно, решил задачу полностью или нет. Поэтому если сможешь додуматься до каких то частных случаев, то решишь ее на полный балл) думаю это важно для программистов бэкендеров всяких, чтобы до выпуска скрипта продумали всякие тонкости в нем
@billyknife616
@billyknife616 2 жыл бұрын
Скорее всего там скрытые тесты есть, результаты которых ты не знаешь, я об этом
@pylounge
@pylounge 2 жыл бұрын
Может быть. Просто другие тесты, обычно, не показываются, чтобы ты не знал на каких данных программа свалилась, но как-то обозначаются. По типу "Ошибка в тесте 42", но что там конкретно не пишут
@E1ektr0Fill
@E1ektr0Fill 2 жыл бұрын
@@billyknife616 Да, нам привели только 1 тест, что бы проверить что программа корректно работает с входными и выходными данными.
@billyknife616
@billyknife616 2 жыл бұрын
@@E1ektr0Fill вы представитель Тинькофф?? :)
@E1ektr0Fill
@E1ektr0Fill 2 жыл бұрын
@@billyknife616 Нет. Я просто проверил. Я закинул код console.log('ответ на тест') и он прошёл
@flsyflsy1
@flsyflsy1 2 жыл бұрын
По странным стечениям обстоятельств подписался 1 человек. Под странным стечением подразумевается годный видос, в том числе. Пожалуй пройдусь по вашему плейлисту основ питона. Мегахорош
@hjvfydhjdl1760
@hjvfydhjdl1760 2 жыл бұрын
Как раз искал Тинькофф. Спасибо!
@georget7376
@georget7376 2 жыл бұрын
3-я задача решается одним маленьким циклом. Не нужны нам 2 списка или вспомогательные функции как у автора, слишком мудренно. В цикле мы пробегаемся по все элементам массива и ищем минимальный нечетный элемент и максимальный четный. Параллельно считаем общую прибыль, прибавляя в счетчик прибыли нечетные элементы, и вычитая четные. Таким образом в конце цикла мы получим общую прибыль, минимальное количество подписок и максимальное отписок. Вычитаем из количества отписок подписки, удваиваем и прибавляем полученное значение к общей прибыли. Объясню: поменяв местами максимум отписок и минимум подписок, мы не только получим прибыль, но и избавимся от убытка, который равен этой самой прибыли.
@codetoday1055
@codetoday1055 2 жыл бұрын
а ти крут если дошел до такого решения, то наверняка ты в этом хорошо разбираешься?
@Игорь-о6ъ2ч
@Игорь-о6ъ2ч 2 жыл бұрын
Можно конечно просто по 2 максимума и минимума держать всю дорогу, а потом прибавить профит, но зачем в квадрат это возводить?
@Игорь-о6ъ2ч
@Игорь-о6ъ2ч 2 жыл бұрын
Если только автор имел ввиду удвоение
@Игорь-о6ъ2ч
@Игорь-о6ъ2ч 2 жыл бұрын
И что будет если максимум отписок больше минимума подписок? Можно ведь менять 0-2 раз, не всегда надо менять именно 1 раз
@vane4ek69
@vane4ek69 2 жыл бұрын
красавчик, я так же решал. На школково разбирали похожие
@НиколайВамильев-с8ш
@НиколайВамильев-с8ш 2 жыл бұрын
Вообще очень интересно .
@xJoskiy
@xJoskiy 2 жыл бұрын
Во втором можно сделать словарь из frozenset'ов и вывести через max с ключом по 'dict'.get
@pandalove6795
@pandalove6795 Жыл бұрын
4 задачу я бы сделал так. Стек контекстов. Это массив объектов, в которых key это название переменной, value очевидно значение. В начале создаем начальный объект, добавляем в массив и пока мы не дошли до { мы изменяем его. Как только мы дошли до { мы добавляем в стек пустой новый контекст и работаем уже с ним. Если новой переменной присваивается значение другой переменной, то мы ищем эту переменную сначала в контексте в котором находимся, если её нет, то идем по всем контекстам до текущего. Если и там не нашли переменную, то по условию она становится = 0. Как только дошли до }, убираем последний контекст из стека. P.s. решил написать код все таки. const findVariableValue = (name, contexts) => { for (let i = contexts.length - 1; i >= 0; i--) if (name in contexts[i]) return contexts[i][name]; return 0; }; const solve = (configuration) => { const contexts = [{}]; const lines = configuration.split(' '); for (const line of lines) { if (line === '{') contexts.push({}); else if (line === '}') contexts.pop(); else { const [variable, rightOperand] = line.split('='); let value = rightOperand; if (isNaN(Number(rightOperand))) { value = findVariableValue(rightOperand, contexts); console.log(value); } contexts[contexts.length - 1][variable] = value; } } } solve(`thats=zero a=10 ten=a aboba=ten ten=-10 { b=a a=1337 c=a { d=a e=aboba } } lol=a`) Много проверок различных опущено, но они и не нужны как я понял по условию.
@blvckcatswag
@blvckcatswag 2 жыл бұрын
В программировании пока что не силен, но комментарий оставить хочется. Во второй задаче, когда речь идёт про алфавитный порядок, автор проговаривает русский алфавит, а имена написаны латиницей, то есть алфавит английский. То есть Vладислав будет последним. Или я что то не так понял Формат очень интересный и познавательный. Жду видео о решении задач с лид(т)кода
@Surf391711
@Surf391711 2 жыл бұрын
там где два дня поменять: берутся два среза, один по четным элементам, второй по нечетным. В одном срезе ищешь минимальное значение. Разница между ними это прибыль
@flildman
@flildman 2 жыл бұрын
13:52 по русскому алфавиту оценивает английский буквы, ультра мега харош
@ayonsamajder
@ayonsamajder Жыл бұрын
Есть ли шанс быть выбранным, если я не смогу решить один вопрос? (№ 6)
@pandalove6795
@pandalove6795 Жыл бұрын
Задачу 7 можно решить так. Сначала разбить строку на символы, и сделать объекты вида { letter: 'h', index: 0 }, то есть буква и её индекс. Далее этот массив отсортировать по letter и index. (получить из hello массив [{e, 1}, {h, 0}, {l, 2}, {l, 3}, {o, 4}]) Далее рассмотрим случай 1 5, сначала получим подмассив из массив выше выбрав только те элементы, чьи index находятся в промежутке от 0 до 4 (т.к. 1 и 5 это номера а не индексы по этому - 1). В данном случае это будет такой же массив. И проходимся по этому массиву. currentIndex = 0, steps = 0, берем 'e', у неё index = 1, значит steps += index - currentIndex, currentIndex = 1, далее идет 'h', у неё index = 0, что меньше чем currentIndex, по этому шагов будет сделано array.length(5) - currentIndex (1) + index (0) = 4. Получаем currentIndex = 0, steps = 5. И т.д. P.s. array.length - currentIndex это кол-во шагов до начала, прибавляя index находим кол-во шагов до нужной полки. Задача получилась достаточно простой (настолько что мне кажется где-то допущена все таки ошибка), по факту формируем его путь, потом находим сколько шагов он будет по этому пути делать. P.s. что-то мне не нравится в этом решение, что-то в районе получения подмассива. Можно как-то по лучше это все организовать мне кажется. Но само решение по сложности O(n*log(n)) из-за сортировки. По памяти тоже O(n).
@whu.9163
@whu.9163 2 жыл бұрын
Надеюсь на ролик про решение задач на литкоде
@dimitriywhite7728
@dimitriywhite7728 Жыл бұрын
В первой задаче возведение в модуль необязательно - квадрат и так даст положительный результат. Учите математику
@VirVen
@VirVen 2 жыл бұрын
В первой задаче нужно рассмотреть 8 разностей(х3-х2, х3-1, х4-х2, х4-х1 и для у также) и взять из них максимальную, так как вторая область квадртаная может быть и сверху и снизу и справа и слева ( в предложенном тобою варианте только один из них рассмотрен). Например, 6 6 8 8 и 8 3 10 5. ( по формуле твоей будет (8-6)^ 2, хотя если нарисовать, то будет видно, что ответ 16). Ну вот мы берём считаем 4 разности и берём наибольшую из них, это и будет точка, самая удалённая от этих двух кабинетов, а дальше возводим в квадрат)
@ФилиппБондарев
@ФилиппБондарев 2 жыл бұрын
def func(ca: Iterable, cb: Iterable) -> int: zipped_coords = list(zip(ca, cb)) coords = [min(i) if zipped_coords.index(i) < 2 else max(i) for i in zipped_coords] x = coords[2] - coords[0] y = coords[3] - coords[1] return x ** 2 if x > y else y ** 2
@robeenx
@robeenx 2 жыл бұрын
@@ФилиппБондарев, хорошее решение! Можно еще последние 3 строчки заменить на 1-ну: return max(x - y for x, y in zip(coords[2:], coords[:2])) ** 2
@jacktwinn
@jacktwinn Жыл бұрын
при 6 6 8 8 и 8 3 10 5 будет 25, а не 16)
@MstrDuos
@MstrDuos 2 жыл бұрын
Я не понял по 3 задаче. Все же проще. Нам нужно взять весь массив чисел, отсортировать, скажем, по убыванию, а потом разделить на 2 списка. Если общее количество чисел нечетное, то добавляем лишний элемент в первый список (т.к. это подписавшийся). Суммируем значения внутри каждого списка и из первого вычитаем второй. Готово. Для красоты можно умножить итоговое число на price, который будет равен единичке в рамке данной задачи. Или я чет упустил или автор чет заморочился))
@astkh4381
@astkh4381 2 жыл бұрын
Не знаешь как на js делать ввод и вывод переменных? Просто есть много способов и я не знаю какой наиболее корректный
@iamcarinn
@iamcarinn 2 жыл бұрын
если я правильно поняла, то это решение противоречит условию, что можно поменять не более, чем 2 дня
@TapoOcheGG
@TapoOcheGG 2 жыл бұрын
А зачем во третьей задаче такой огород городить? Мы знаем, что функция возвращает положительные значения при чётных числах и отрицательные при нечётных. Не проще по этому условию разбить два массива, потом макс одного и мин второго махнуть?
@codetoday1055
@codetoday1055 2 жыл бұрын
возможно, скорее всего да. Возможно, автор просто не предвидел более простого решения, а возможно, проигнорировал.
@vadimm4308
@vadimm4308 2 жыл бұрын
Нет. Ваше решение не верное.
@ekaterinaalekseenko9
@ekaterinaalekseenko9 2 жыл бұрын
Буква V идет после буквы I в английском алфавите. Мне кажется, Vladimir во второй задаче должен быть последним
@pylounge
@pylounge 2 жыл бұрын
Да, извиняясь, трудно "переключиться" на английскую раскладку в голове)
@MisterTrayser
@MisterTrayser 2 жыл бұрын
Там где то было написано что полноценные тесты запускаются после окончания контеста.
@kusvik7538
@kusvik7538 2 жыл бұрын
Очень приятный голос!
@velikorossnationalist4259
@velikorossnationalist4259 2 жыл бұрын
А на фронтендера тоже решают подобные алгоритмические и математические задачи?
@pylounge
@pylounge 2 жыл бұрын
в подобного рода стажировках да
@anzorbaysarov4665
@anzorbaysarov4665 2 жыл бұрын
То чувство, когда тинькоф совсем не следовали своим условиям и вот такие ребята, как автор, писали и прошли топорные(бездарные) решения в o(n2) сложности алгоритмов. Автор хорошо конечно объяснил свои наработки
@МаксимГорелов-г3у
@МаксимГорелов-г3у 2 жыл бұрын
там проверяют только на 1 тесте, так что такие люди, как автор не собрали достаточное кол-во баллов)
@E1ektr0Fill
@E1ektr0Fill 2 жыл бұрын
Почему не следовал то? Там же тестов нет. Там только 1 тест, что бы проверить что программа корректно работает с входными данными. Т.е. если ты бы просто написал console.log('Ответ из примера') - тебе тоже сказали что всё ок.
@astkh4381
@astkh4381 2 жыл бұрын
@@E1ektr0Fill не подскажешь как можно нормально делать ввод данных в ноде? А то костыль получается какой
@E1ektr0Fill
@E1ektr0Fill 2 жыл бұрын
@@astkh4381 а хз. Я на . Net пишу.
@АлександрИванов-ж3щ9з
@АлександрИванов-ж3щ9з 2 жыл бұрын
По поводу №7: предложены 3 варианта для теста кода. Первый 1-5 даже расписан. Ответ 9. А второй 1-2, почему ответ 2? логика то такая же- с 'h' шаг до 1('e') и потом еще 4 до 'h' третий вариант 2-5, тут №2 это 'h' исходя из 1 варианта. Тогда и решение будет 4, а не 3 Или что я не так понял из условий задачи?
@AlexanderSelyutin
@AlexanderSelyutin 2 жыл бұрын
когда 1-2 то после 2 у него следует один. Т.е. типа зациклино когда создан отрезок.(хотя явно не сказано) для 2-5. 0 шагов до h 2 шага до l еще 1 шаг до l и 1 шаг до o довольно идиотская задача
@pandalove6795
@pandalove6795 Жыл бұрын
когда берется отрезок 1-2, то llo отбрасывается т.к. он их даже смотреть не будет, зачем по ним ходить. То есть у нас получается he только. Соответственно до e 1 шаг, до h 1 шаг.
@alextlt2005
@alextlt2005 2 жыл бұрын
Задача 3 как-то слишком мощно решена. Я б сделал циклом 2 списка (четные индексы в список подписок, нечетные-отписки). Затем (сумма подписок минус сумма отписок) + (макс(отписки) - мин(подписки))
@codetoday1055
@codetoday1055 2 жыл бұрын
Хорошая идея почему автор так не сделал🤔🤔
@alextlt2005
@alextlt2005 2 жыл бұрын
@@codetoday1055 возможно, потому что автор хочет показать максимум инструментов, которыми владеет. Кстати, интересно, как лучше действовать на собеседовании? Решать максимально простым способом или наоборот? :)
@codetoday1055
@codetoday1055 2 жыл бұрын
@@alextlt2005 Я думаю все-таки наоборот потому что лучше показать максимум своих умений.
@alextlt2005
@alextlt2005 2 жыл бұрын
@@codetoday1055 спорно. Я, как потенциальный работодатель, напрягся бы, если бы кандидат на должность водителя ради демонстрации своих умений в тестовой поездке поехал из Москвы в Питер через Владивосток :)
@codetoday1055
@codetoday1055 2 жыл бұрын
@@alextlt2005 :) Думаю да. Кстати, в какой сфере думаешь предоставлять рабочие места - услуги?
@momentomori6567
@momentomori6567 2 жыл бұрын
Могу поделиться скриншотами полных задач за май, интересно увидеть решение от тебя. Я участвовал в Start за май и август. Первый раз не прошёл, сейчас жду результаты.
@nickklick5824
@nickklick5824 2 жыл бұрын
Сколько изучаете программирование?
@codetoday1055
@codetoday1055 2 жыл бұрын
Если ты написал этот код, то могу только пожелать удачи.
@СтасМихолап-ш4п
@СтасМихолап-ш4п 2 жыл бұрын
Слушай, можешь поделиться решениями?
@TypXox-h6q
@TypXox-h6q 2 жыл бұрын
Чеможешь скинуть ссылку на майл?
@Ardent-x8t
@Ardent-x8t Жыл бұрын
Привет-привет, кинь, пожалуйста, скриншоты
@ДмитрийКаштанов-д3б
@ДмитрийКаштанов-д3б 2 жыл бұрын
Самая дичь в том, что эти же задачи были для QA Engineer. Всё время ушло на попытки понять условия. В 6-й задаче, в примере Вывод: 6, написано в замечании, что лифт, у которого совпадают начальный и конечный этажи можно использовать 1 раз, значит лифт 2-2 мы не можем использовать дважды и получается длинна цепи 5, а не 6. Откуда там 6?
@whitehat-it-4096
@whitehat-it-4096 2 жыл бұрын
да, я 5 лет олимпиадным программированием и я тебе скажу так - понимать условия задач эта основная проблема. Пока ты вникнешь в задачу пройдет минут 10, еще решать ее не так то и быстро. А в олимпиадной проге каждая минута на счету
@have_no_soul
@have_no_soul 2 жыл бұрын
в начале написано, что лифтов несколько и у каждого есть свои старт/финиш этажи, и в примере дано: 7 лифтов в здании и некоторые 2-2. Согласно тому, что написано в замечании, такие "лифты можно использовать 1 раз", типа вошел-вышел, а в твоем вопросе условие звучало бы примерно так - "есть лифты, у которых старт-финиш совпадают, тогда прокатиться можно только на одном из них". Условие корректно, главное внимательно их читать, но согласен, мозг плавился пока смотрел видос
@maxsergeevic1610
@maxsergeevic1610 2 жыл бұрын
вот к его решению.. а если б не было лифтов начинающихся с 2? то можно ль утверждать что 0 2 минимальный лифт?
@Dukapb81
@Dukapb81 2 жыл бұрын
Тоже на qa пробовал в мае. Кое как две решил. Тест вроде весь прошел по теории тестирования, но кому он нужен, судя по всему?.. вообще думаю, для тестеров задачи уж слишком.
@EntireMusic
@EntireMusic 2 жыл бұрын
Вторую задачу проще решить с использованием словаря
@andreiKspb
@andreiKspb Жыл бұрын
вопрос, а сами ответы на сайт загружались? Они проходят валидацию?
@tatyanavoronkova440
@tatyanavoronkova440 2 жыл бұрын
Добрый день! Подскажите, пожалуйста, что означает ошибка компиляции в контесте PT - Partial Solution? Код на Python в Jupiter notebook работает нормально, для входных данных решает корректно, не пойму, чего не хватает.
@pylounge
@pylounge 2 жыл бұрын
Все тесты прошли без ошибок, но не на всех тестах статус "ОК"
@ivanivanovich975
@ivanivanovich975 2 жыл бұрын
А разве в таких задачах не должен использоваться стандартный ввод (sys.stdin)? Имеется ввиду, что входные данные должны передаваться программе "одним пакетом" и уже программа должна все эти данные разложить в параметры и атрибуты. А input() - это ручной ввод (ввод с клавиатуры). Разве на каждый тест в Тинькове данные вносятся вручную???
@E1ektr0Fill
@E1ektr0Fill 2 жыл бұрын
Ввод с клавиатуры обычно использует stdin. ХЗ как в питоне. В других языках обычно так.
@apelcini3
@apelcini3 2 жыл бұрын
Я вот решил все задачи, но сделал максимально просто. 4 не далась, потому что не описан формат входных данных. Даже писал в саппорт, мол чтение stdin до конца не запускается с RT (Runtime Error), саппорт ответил, что это тоже часть задачи, пук, среньк - клоунада, короче. По итогу не прошёл. Интересно было бы посмотреть таблицы с результатами, но они не публикуются 🤡.
@Игорь-о6ъ2ч
@Игорь-о6ъ2ч 2 жыл бұрын
В 4 просто try можно использовать для проверки остановки ввода
@bulatok7312
@bulatok7312 2 жыл бұрын
можно проверять на EOF, по крайней мере я так сделал и зашло.
@МитяМирный-к5о
@МитяМирный-к5о 2 жыл бұрын
А ты на питоне писал? мне результаты еще не пришли, я на шарпах
@y.saunders7442
@y.saunders7442 10 ай бұрын
Пробовал на QA податься, после этого гемора с RT забил, проще пройти собес на мидла, чем часами пытаться разрулить проблемы входа/выхода в этих задачах ради стажировки
@ekaterina4909
@ekaterina4909 Жыл бұрын
Как вы считаете, опыт решения олимпиадных задач как-то помогает в реальной жизни?... Такое чувство, что в данном случае учеба ради учебы без какого-либо дальнейшего применения полученных навыков...
@nikitiki524
@nikitiki524 11 ай бұрын
Подскажите пожалуйста, стажировку прошли?
@flildman
@flildman 2 жыл бұрын
первая задача решена не верно, это работает лишь в частном случае. При координатах (2,2,5,5) (6,1,10,8) твой способ уже не работает. Думаю сработало бы так: складываем стороны, сравниваем какая сумма больше, и уже её возводим в квадрат
@ukratitelkisok9726
@ukratitelkisok9726 2 жыл бұрын
Можно проще, я решал это дерьмо
@flildman
@flildman 2 жыл бұрын
@@ukratitelkisok9726 сказал а, говори и б. Как?
@andrewvotkinsk5038
@andrewvotkinsk5038 2 жыл бұрын
Только начал изучать питона, поэтому не пинайте сильно, но мне думается: берёшь разность по экстремальным точкам по Х и сравниваешь с разностью м/у экстремумами по У, что больше, ту и возводишь в квадрат.
@qwerty-hk4by
@qwerty-hk4by 2 жыл бұрын
ищешь самую правую и самую левую точку по x, аналогично для y, большую разность возводишь в квадрат
@ThisIsGreenRoom
@ThisIsGreenRoom 2 жыл бұрын
тоже самое хотел написать, что решение первой подгон под 1 случай)
@Levelord92
@Levelord92 2 жыл бұрын
Это задачи на Стажировку?...
@Алексей-б3х5б
@Алексей-б3х5б 2 жыл бұрын
Да
@ДмитрийТрусиенко-у5ь
@ДмитрийТрусиенко-у5ь 2 жыл бұрын
1. Решена неправильно (тот факт что в решении используются не все даваемые данные уже звоночек что решение неправильное) 2. Ок 3. Ок 4. Простая задача аля "сделай ровно то, что написано". Единственное надо аккуратно работать с памятью и не клонировать все хранимые переменные, лучше в каждом блоке завести словарь, в котором будут храниться старые значения только в случае если они были изменены, тогда потребление памяти будет линейным по входным данным. Ну и + если стек рекурсии будет шалить, то можно заместо неё использовать стек. 5. Решена жутко неоптимально. Можно отсортить исходные строки, завести словарь запросов (чтобы находить их по префиксу), бежать по исходным строкам, перебирать префиксы, искать нужный запрос в словаре, увеличивать счетчик на 1. Если значение счетчика == k, то вот она нужная строка. Чтобы это еще работало для случая если в запросах одинаковые префиксы, то надо хранить не один k, а отсортированный список k для этого префикса. Дальше я думаю понятно как. 6. Решена неправильно, элементарный тест 3 0 3 1 2 2 3 7. Решим для одно запроса: для каждой буквы посчитаем её самое левое и самое правое вхождение в подотрезок , теперь смоделируем Петю, допустим ему нужна какая-то буква X и он находится в позиции pos, тогда если pos
@АлександрИванов-ж3щ9з
@АлександрИванов-ж3щ9з 2 жыл бұрын
6.тест 3031223 - можно в терминах условия задачи- лифт (i,j) ?
@kuchma19
@kuchma19 2 жыл бұрын
Решение последней задачи не пройдет по времени. Нужно на каждый запрос отвечать за O(log n).
@codetoday1055
@codetoday1055 2 жыл бұрын
Ты сам до этого дошел или где-нибудь подсмотрел?
@kuchma19
@kuchma19 2 жыл бұрын
@@codetoday1055 Сам дошел. Это не сложно.
@E1ektr0Fill
@E1ektr0Fill 2 жыл бұрын
У него не только последняя не пройдёт по времени. Он не решил не одну из основных задач 5-8
@kuchma19
@kuchma19 2 жыл бұрын
@@E1ektr0Fill а, даже так... Я просто не решил во время контекста ее. Думал тут будет какое-то решение нормальное и посмотрел только ее. Я придумал только решение с деревом отрезков в вершинах которого находятся суффиксные деревья.
@E1ektr0Fill
@E1ektr0Fill 2 жыл бұрын
@@kuchma19 Да, слушай, ты прав. Не знал название того что реализовал. Да, тут нужно суффиксное дерево. А зачем дерево отрезков? Почему просто в нодах не указывать сколько таких элементов. Мб я конечно что то упускаю.
@astkh4381
@astkh4381 2 жыл бұрын
я так понимаю задачи для всех направлений одинаковые? И как правильно делать ввод и вывод переменных на js?
@MrAlvel
@MrAlvel 2 жыл бұрын
Капец... Вы первое задание решили в частном случае... )) Смысл то был написать код, который решает все возможные варианты. Миссия провалена.
@ekshowroom6967
@ekshowroom6967 Жыл бұрын
Всем привет! Подскажите, пожалуйста, сколько в Тинькофф платят на стажировке системному аналитику? И имеет ли смысл торговаться по оплате с HR перед стажировкой?
@ViktorAr2023
@ViktorAr2023 Жыл бұрын
1) Это же стажировка какая торговля? там столько кандидатов.Что ваша торговля не прокатит 2) Ну вилка в том году знакомы говорил 60-90 рублей 000 в месяц. Зависит от времени работы в месяц. За 40 часов в неделю платят максимум.
@vladimir7759
@vladimir7759 8 ай бұрын
Идешь устраиваться уборщицей а на собесе тебя спрашивают как играть в шахматы
@ИванИванов-ш1ш1й
@ИванИванов-ш1ш1й 2 жыл бұрын
проблемы написать нет, а вот понять что от тебя хотят на этом птичьем языке есть и очнеь большая, для нормальных людей та не судьба писать?
@aleksanderm1947
@aleksanderm1947 2 жыл бұрын
Объясните пожалуйста зачем делать тестовое бесплатно да ещё и часами?
@pylounge
@pylounge 2 жыл бұрын
Затем что когда у тебя нет опыта и до этого ты нигде никогда не работал - твоё время стоит примерно 0 рублей)
@damirasanov8993
@damirasanov8993 2 жыл бұрын
второй
@BigFishing_info
@BigFishing_info 2 жыл бұрын
Все задачи лёгкие ... Они больше на логику чем на программирование)) большинство даже в Excel можно было сделать))
@ДаниилЕльмиров
@ДаниилЕльмиров 2 жыл бұрын
Привет, скинь твое решение 6 задачи в экселе, пожалуйста, не смог разобраться.
@E1ektr0Fill
@E1ektr0Fill 2 жыл бұрын
@@ДаниилЕльмиров 6 задача - реализация алгоритмы дейкстра. Если надо, могу кинуть)
@Игорь-о6ъ2ч
@Игорь-о6ъ2ч 2 жыл бұрын
В excel слишком просто. Сделай на sql, если они настолько простые😁
@E1ektr0Fill
@E1ektr0Fill 2 жыл бұрын
Сори чел. Всё не смотрел, глянул самую простую - 6 задачу. Она решается через реализацию алгоритмы Дейкстры. Лучше бы не позорился.
@pylounge
@pylounge 2 жыл бұрын
Если бы я хотел не позориться, то после закрытия контеста за 20 дней решил бы их неспеша (или попросил бы кого-нибудь решить за меня) и записал бы 8 из 8)
@Игорь-о6ъ2ч
@Игорь-о6ъ2ч 2 жыл бұрын
Динамическим программированием за несколько строк решается. Хотя и с помощью Дейкстра можно решить конечно. И это не самая простая задача, самая норм 4, с самая простая первая конечно, хотя я сначала решил 4, остальные оторваны от реальности как обычно)
@E1ektr0Fill
@E1ektr0Fill 2 жыл бұрын
@@Игорь-о6ъ2ч мне больше всего 8 понравилась.
@E1ektr0Fill
@E1ektr0Fill 2 жыл бұрын
@@Игорь-о6ъ2ч а как с помощью dp решить? расскажи плиз
@Игорь-о6ъ2ч
@Игорь-о6ъ2ч 2 жыл бұрын
@@E1ektr0Fill отсортируем лифты сначала по начальному этажу, потом по конечному. Потом проходимся по каждому лифту и длина цепи до него получается максимум из текущей длины цепи до конечного этажа и длиной пути до начального этажа текущего лифта + 1. На русском как то не очень понятно получается😁
@АлександрБаранов-ь3ц
@АлександрБаранов-ь3ц 2 жыл бұрын
При вводе нижеперечисленных данных для 6 задачи программа выдает 4 вместо 6: 8 1 2 2 6 6 8 1 3 3 4 4 5 5 6 8 9
VIP ACCESS
00:47
Natan por Aí
Рет қаралды 30 МЛН
How Strong Is Tape?
00:24
Stokes Twins
Рет қаралды 96 МЛН
How to treat Acne💉
00:31
ISSEI / いっせい
Рет қаралды 108 МЛН
Правильный подход к детям
00:18
Beatrise
Рет қаралды 11 МЛН
Решаю простые задачки на Python с сайта Codewars
13:44
Клуб дедов-программистов
Рет қаралды 458 М.
Основы Docker | Docker И Python
1:09:54
PyLounge - программирование на Python и всё о IT
Рет қаралды 57 М.
Основы PyCharm | Лучшая IDE Для Python
37:50
PyLounge - программирование на Python и всё о IT
Рет қаралды 189 М.
VIP ACCESS
00:47
Natan por Aí
Рет қаралды 30 МЛН