LINUX.ORG.RU
ФорумTalks

Свежая задачка с Yandex Backend Tour 2023 - «Опытная команда»

 ,


0

1

Эта тема создается для тех, кто завтра еще будет иметь возможность порешать задачки с Yandex Backend Tour 2023.

Условие задачи «Опытная команда» я не разглашаю (покажу ее после 23:59 19.11.2023), но хочу написать что имели в виду авторы. У меня плохо с пониманием других людей, а когда решение нужно делать на время, когнитивные функции напрочь отключаются.

Так вот, когда вы будете пытаться понять, почему в разборе примера авторы написали вот это:

----- 8< -----

В момент времени T=2 к команде присоединяется Victor. Опытность Ivan и Anton теперь равна 1, опытность Victor равна 0. Разность между суммарной опытностью оставшихся членов команды и опытностью самого опытного члена команды равна (1+0)−1=0. Добавляем к ответу Anton 0

----- 8< -----


То возможно вас наведет на правильную мысль следующее объяснение:


----- 8< -----

Ребята из Яндекса не написали в условии задачи, как определяется самый опытный. Зато написали в формате вывода: «Если членов команды с максимальной опытностью несколько, нужно вывести того, чье имя лексикографически минимально».

За этой фразой, видимо, скрывается мысль, что этот принцип используется не только при выводе. Видимо, подразумевалось, что данный принцип надо использовать и в других местах программы. (Для меня это не очевидно).

Поэтому я, наивный, и не понял, что когда считается опытность самого опытного члена, то если получается более одного члена с одинаково высоким опытом, то надо выбрать лексикографически самого опытного, и суммарный опыт посчитать без этого человека.

Другими словами, нужно учитывать что «лексикографический выбор» надо делать не только при выборе, какого кандидата показать в результирующей строке. Но и это же нужно делать и в основном коде, когда считается опытность команды. И значение этого человека не включать в суммарный опыт команды.

----- 8< -----


Вот, возможно кому-то поможет. Я потратил на попытки понять условие много времени, потому что было обидно что код написан, все разложено по полочкам, а я не догоняю что от меня конкретно хотят.

PS: Задача даже не на алгоритмы, а просто на корректное написание простого кода, который парсит входные данные по некоторым правилам.

PPS: И да, я не прошел.

★★★★★
Ответ на: комментарий от firkax

Я же текст задачи не пишу.

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

Когда решаешь на время, это критично.И я не мог поверить, что у такого гиганта настолько криво задания составлены.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

На эти задачи олимпиадников с 5-го класса натаскивают, если не с 1-го. Поэтому у тебя там нет шансов. Это как если бы ты пришел на конкурс обслуги по укладки полотенец и простыней.

И представь, что с тобой конкурирует молодёжь с 5-го класса, каждый день дрессируемые как в цирке на укладку простыней 25-ю разными способами. Ты же максимум умеешь неспешно квадратиком складывать, иногда запутываясь в этих «парусах». И вот вам дают 5 минут на укладку наибольшего количества простыней и полотенец в шкаф.

И вот эти сутулые, с плохой генетикой в очках, никогда не слышавшие про спорт и физическую культуру, а значит и с плохим кровотоком в мозгу и слабыми нейронными связями, тем не менее тебя уделывают.

foror ★★★★★
()
Ответ на: комментарий от Xintrea

Вообще-то почти написал. + дал подсказку как решать.

настолько криво задания составлены

Если что-то расходится с твоими ожиданиями - не значит криво. Возможно, постановка задач тщательно продумана и они хотят именно посмотреть как будут рещать в такой формулировке.

firkax ★★★★★
()
Ответ на: комментарий от foror

никогда не слышавшие про спорт и физическую культуру, а значит и с плохим кровотоком в мозгу

Как у тебя мышечная нагрузка коррелирует с кровотоком в мозге?

imul ★★★★★
()
Ответ на: комментарий от imul

Как у тебя мышечная нагрузка коррелирует с кровотоком в мозге?

Самым прямым образом. Если что, кровеносная система в организме замкнутая. Хороший кровоток в бицухе – хороший кровоток в мозгу.

MoldAndLimeHoney
()
Ответ на: комментарий от MoldAndLimeHoney

Хороший кровоток в бицухе – хороший кровоток в мозгу.

Хороший, но частенько бесполезный.

leave ★★★★★
()
Ответ на: комментарий от firkax

Вообще-то почти написал.

Нет. Но ты, конечно, можешь восстановить условие, и написать тут, а я проверю. Но объективности не будет, потому что ты можешь зарегаться и посмотреть условия.

Я тоже мог бы зарегаться под вымышленным именем, посмотреть задачки, порешать, а потом зарегаться под своим и спокойно пройти. И так наверно даже кто-то делает, но не я, мне так не интересно.

+ дал подсказку как решать.

Там не нужно ничего подсказывать, задача вообще не про алгоритмы, хотя считается алгоритмической секцией. Вопрос в понимании условий, которые написаны криво. А спросить не у кого, и ты чувствуешь себя андроидом из Бегущего по лезвию, который осознает, что не понимает мышление человека, хотя логические умозаключения ему доступны.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

А так оно публичное онлайн? Я думал это что-то серьёзнее. Но всё равно я считаю что это подсказка, хотя наверно и не критичная с учётом формата мероприятия.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от Xintrea

в олимпиадных задачах ожидаются четкие и понятные условия,

там своя атмосфера.

Shadow ★★★★★
()

основном коде, когда считается опытность команды. И значение этого человека не включать в суммарный опыт команды.

Я хз, что там за задача, но если у тебя есть 2 человека с одинаковым опытом, то какая разница, кого из них выкинуть из расчета?

ya-betmen ★★★★★
()
Ответ на: комментарий от foror

То-то я смотрю у нас в академии наук олимпийскими спортсменами набита. Хотя тебе спорт никак не поможет.

imul ★★★★★
()
Ответ на: комментарий от MoldAndLimeHoney

Ты б хоть учебник по физиологии посмотрел бы. Хотя, тебе это тоже не поможет.

imul ★★★★★
()
Ответ на: комментарий от Xintrea

в олимпиадных задачах

Я по своей первой специальности несколько лет олимпиадил и даже очень успешно. С реальными задачами связи нет от слова ВАЩЕ. Да, это хорошо чтобы отсеивать джунов по общему уровню теоретической подготовки и задротства. Остальным то зачем?

Yandex Backend Tour 2023

Олимпиадные задачи дрючат только яндекс с тиньковым и у обоих приложения/сервисы лютое днище.

Lordwind ★★★★★
()

И да, я не прошел.

Ну не прошел и не прошел. Это такого рода 350 тыщ специалистов им ннада? Которые «меряются опытностью» написания хеллуворлдов про определение опытности? Напоминает признание гуглов что ихние «задачи» не имеют отношения к задачам... А прост чтоб интервьюэр смог повыеживаться.

slackwarrior ★★★★★
()
Ответ на: комментарий от Lordwind

Я по своей первой специальности несколько лет олимпиадил и даже очень успешно. С реальными задачами связи нет от слова ВАЩЕ. Да, это хорошо чтобы отсеивать джунов по общему уровню теоретической подготовки и задротства. Остальным то зачем?

Ну вот такая меритократия. Если посмотреть с другой стороны, то это достаточно удобно: людей поставили в почти одинаковые условия, посчитали баллы и приняли решение. Не знаю, правда, как отлавливают читеров, которые с одного аккаунта смотрят условия, с другого закидывают решения, или за которых решают более прошаренные дружбаны.

Но я с тобой согласен в том, что экстремально ограничивать время на решение - это не лучшая практика. Я и в более резвые годы решал задачи медленно, и ни разу не пересекал границу «все кто выше - красавчики, остальные - лохопеды». Это не значит, что я не знаю как решать, мне тупо не хватает времени, и больше всего уходит на понимание условий а не на код.

* * *

Все, тур закончился, могу показать полную задачу.

Задача Yandex «Опытная команда» с Yandex Backend Tour 2023

Сохранил условие на последней секунде, другие задачи не сохранял.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Но я с тобой согласен в том, что экстремально ограничивать время на решение - это не лучшая практика. Я и в более резвые годы решал задачи медленно, и ни разу не пересекал границу «все кто выше - красавчики, остальные - лохопеды». Это не значит, что я не знаю как решать, мне тупо не хватает времени, и больше всего уходит на понимание условий а не на код.

Да, такая же фигня. Туда же лайвкодинг, кстати. Если я вдумчиво посижу, то сделаю. Если надо быстро и вживую — начинаю тупить.

Zhbert ★★★★★
()
Последнее исправление: Zhbert (всего исправлений: 1)

Я дочитал до русских имён на латинице, но уже не смог пройти через бред о арифметическом суммировании опыта. Лишний раз убеждаюсь, что все эти олимпиады, хакатоны, тесты создаются идиотами для идиотов.

seiken ★★★★★
()
Ответ на: комментарий от imul

То-то я смотрю у нас в академии наук олимпийскими спортсменами набита

Я где-то говорил о занятии профессиональным спортом и автоматическом приёме сигналов из космоса напрямую в мозг с пакетом курсов по квантовой физике? Я лишь сказал, что регулярные занятия физической культурой благоприятствует здоровому и работоспособному мозгу. А что ты затем туда будешь заливать зависит от тебя и страны, в которой ты родился.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 2)
Ответ на: комментарий от Xintrea

Задача Yandex «Опытная команда» с Yandex Backend Tour 2023

Всё «прекрасно» в этой задаче! Начиная с фразы:
«Команда - это живой организм, ее состав постоянно изменяется.»
Команда! fuck my brain! Единственный вопрос: «Что курил афтар?»

Бывает, что кто-то возвращается в команду после ухода и даже проделывает это несколько раз!

Туда сюда обратно, тебе и мне приятно... Норм так «Комааанда...» :)

anc ★★★★★
()
Ответ на: комментарий от Zhbert

Да, такая же фигня. Туда же лайвкодинг, кстати. Если я вдумчиво посижу, то сделаю. Если надо быстро и вживую — начинаю тупить.

Так это как раз нормально, вы не «бросаетесь на амбразуру», а оцениваете задачу и выбираете подходящие по вашему мнению варианты. Даже «Сколько будет 1 + 1 ?» это задача требующая дополнительных уточнений :)

anc ★★★★★
()
Ответ на: комментарий от Xintrea

^^^ - Как понимать это умозаключение?

«Опытность Ivan и Anton теперь равна 1» - значит, суммарная опытность оставшихся членов команды как минимум 2.

А авторы почему-то написали (1 + 0) - 1 = 0, хотя по логике вещей должны были написать (1 + 1) - 1 = 1.

Всё у них правильно написано. Самый опытный Anton, его опытность 1. Оставшаяся команда - Ivan(опыт такой же как у Anton: 1) и Victor(только что пришёл, опыта 0). Сумма их опыта == 1. Так что разница между опытом самого опытного (Anton, 1) и суммарным опытом остальной команды (1) – равна нулю.

Beewek ★★★
()

Ну, а почему нет обещанного показа после 23:59 19.11.2023? Это же такая милота. Я коллекцию котиков выкину, и буду это разглядывать. Дрочить не буду, организм не такой уже. Эти милейшие люди руководители от б-га мало того, что умения человека в одной цифре выразили, так ещё и арифметические действия над ними выполнять изволили. Но не просто изволили, наукой это сделали. Да. Вопрос на экзамене «зачем нужно изучать математику?» однозначно посрамлен и выкинут. Опубликуйте, не откажите стареющему большевику в радости.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 8)
Ответ на: комментарий от Beewek

^^^ - Как понимать это умозаключение?
Всё у них правильно написано.

Ну да, строчкой ниже я даже написал почему.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Как ни выбирай самого опытного (для простоты можно и лексикографически), под суммарным опытом оставшейся части команды явно подразумевается сумма опыта всех за вычетом этого самого опытного. Я сам не люблю олимпиадные задачки, но конкретно в этом задании всё однозначно.

Beewek ★★★
()
Ответ на: комментарий от Xintrea

А! Я понял, в чём твоё недопонимание. Под словом «оставшихся» ты подразумевал тех членов, которые на данный момент остаются в команде. А там имеется в виду оставшихся == остальных (кроме самого опытного).

Beewek ★★★
()
Ответ на: комментарий от Beewek

Да.

Ну и плюсом то что в тексте условия написаны не все условия, а их надо додумывать из раздела с форматом вывода.

Вообще у яндекса все задачи такие многословные, что авторы не замечают как плодят неоднозначности. На том же leetcode.com все кратко и ясно и пофигу что на англицком. А тут на родном языке не понимаешь «и шо конкретно ты имела в виду».

Xintrea ★★★★★
() автор топика
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от Xintrea

И сколько времени было на решение этой задачи?

foror ★★★★★
()
Ответ на: комментарий от foror

Так попроси чатгпт сократить лишний мусор. Или не справляется?

Зачем так сложно? Раз уж использовать ChatGPT, надо попросить сразу написать код решения, чего мелочиться.

И сколько времени было на решение этой задачи?

Я пытался понять что имеется в виду где-то час-сорок/час-пятьдесят. Я наивно полагал, что успею разобраться, так как задачка то простая, есть пошаговый пример с объяснениями. Но застрял на понимании третьего пункта, усе, дальше не продвинулся. Потом плюнул и перешел к следующей, но оказалось что ее надо писать на чем-то быстром, там жесткое ограничение по времени на выполнение кода. А у меня никаких заготовок на C и плюсах не было, я минут 15 только вспоминал как из входного потока форматированный ввод делать, какие там заголовки подключать, как в консоли компилить. За последующие 15 мин алгоритм написать не успел, время закончилось. Всего было 4 задачи, дается 3 часа.

В общем, не для меня эти олимпиадные условия. Только давление подпрыгнуло и спать потом не мог, ну их нафиг.

Xintrea ★★★★★
() автор топика
Последнее исправление: Xintrea (всего исправлений: 1)

В решении написать 8======>

DumLemming ★★★
()

Тебе повезло что ты в эту парашу не наступил.

pikwik ★★
()
Ответ на: комментарий от Xintrea

Задача в которой приходится додумывать условия (причём без каких-либо критериев правильности) — это плохая задача. Отсюда можно сделать вывод об отсутствии в компании нормальных аналитиков.

pikwik ★★
()
Ответ на: комментарий от pikwik

Отсюда можно сделать вывод об отсутствии в компании нормальных аналитиков.

Зато очень уверенная и сплоченная команда HR :)

anc ★★★★★
()
Ответ на: комментарий от Xintrea

Не выдумывай, там всё сформулировано предельно ясно. Я то думал и правда какая-то двусмысленность в условии, ну бывает, а тут реально ты тупо его не понял. И не надо валить вину на авторов задачи.

И да, задача не «олимпиадная», а вполне себе тривиально-бытовая, даже немного практически полезная (только сильно упрощённая от практики).

Если писать её на привычной пишущему скриптоте (т.е. не возиться с низкоуровневой корректностью кода) то никаких 2 часов там не нужно, хватит минут 10-15 скорее всего.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от pikwik

А комментатор который критикует даже не прочитав критикуемое - это плохой комментатор-критикан.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Я то думал и правда какая-то двусмысленность в условии, ну бывает, а тут реально ты тупо его не понял.

Да, я не понял точное различие терминов «оставшиеся члены команды» и «остальные члены команды», которые яндексоиды в условии еще и выделили жирным. Зачем они выделили, чтобы показать, что речь идет об одном и том же? Или они выделили чтобы обратить внимание, что это разные вещи? Если разные, то в каких взаимоотношениях находятся эти два понятия? Входят ли «остальные» в «оставшиеся» или вообще нет и эти множества не пересекаются? А может быть наоборот, «оставшиеся» входят в «основные»? Или все-таки эти понятия равнозначны?

И да, задача не «олимпиадная», а вполне себе тривиально-бытовая, даже немного практически полезная (только сильно упрощённая от практики).

Я именно об этом и написал. Задача даже не на алгоритмы. Под решением олимпиадных задач я имею в виду спортивное программирование. Это решение на время. Это совсем не значит, что там что-то сверх сложное.

Если писать её на привычной пишущему скриптоте (т.е. не возиться с низкоуровневой корректностью кода) то никаких 2 часов там не нужно, хватит минут 10-15 скорее всего.

Я рад, что у тебя понятийный аппарат такой что ты прочитал и сразу все понял. Или тебе только показалось, что ты все понял, - это не имеет значения, так же как и твои фантазии о том, что тебе хватит 10-15 минут. Пока ты не доказал обратного, твои размышления ничего не значат.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Зачем они выделили, чтобы показать, что речь идет об одном и том же?

Наверно чтоб самые тупые из решателей задачи ненароком не посчитали суммарный опыт всей команды вообще. А так я не представляю как эту фразу можно понять иначе, если все её слова ты заметил и если русский язык тебе родной.

Чтобы остальные не лазили по ссылкам не искали это всё, приведу тут цитаты:

требуется определить самого опытного члена команда и то, насколько суммарная опытность оставшейся части команды (то есть всех, кроме самого опытного) больше опытности самого опытного члена команды

Каждая строка должна состоять из двух значений - имени самого опытного члена команды и разности между суммарной опытностью остальных членов команды и опытностью самого опытного члена команды

firkax ★★★★★
()
Ответ на: комментарий от firkax

Чтобы остальные не лазили по ссылкам не искали это всё, приведу тут цитаты

Не надо вводить людей в заблуждение. Вторая цитата не из условия. Она из раздела «Формат вывода».

Но вообще, когда ты эту белиберду поймешь, что не факт, то можешь начинать размышлять, является ли членом команды человек, который уходит из команды на момент, когда пришло сообщение, что он команду покидает. А потом можешь поразмышлять о том, является ли членом команды человек в тот момент, когда он только пришел, или его нужно учитывать только на следующем событии. Пространство возможных решений, учитывая эти факты и неоднозначности с оставшиеся/остальные, у тебя несколько увеличится, не так ли? И заметь, ответов на эти вопросы все так же в условии нет.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

«Формат вывода» это тоже часть условия.

Тебе пришло событие «человек пришёл». После события ты начинаешь подсчёты и очевидно он в команде. Потом пришло событие «человек ушёл» - опять начинаешь подсчёты уже без ушедшего. Опять же, для самых непонятливых там даже пример есть, как после события прихода первого человека мы печатаем его имя в качестве самого опытного.

Все неоднозначности ты сам придумал, в условии их нет.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Условие - это то что сформулировано в условии задачи. Формат вывода предполагает, что все уже посчитано и всего лишь дается форма как это вывести. Разбираемый пример - это тоже не условие задачи.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Не надо демагогией заниматься. Переименование абзацев формулировки задачи на её смысл никак не влияет. В любом случае, нужная фраза про то, какое число надо посчитать, есть и в том, что ты называешь условием, и в том, что ты называешь форматом. При этом в абзаце «условия» прямым текстом пояснено, что «оставшиеся» - это все кроме самого опытного.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

Я понимаю, что ты даже не попробовав решить эту задачу, так лихо размышляешь о том, как это просто сделать. И условие, по твоему мнению, такое понятное и простое. Но это все ровно до того момента, пока ты не докажешь, что можешь за 15 минут решить эту задачу на практике (уже не докажешь).

Если бы ты был внимательным, то прошел по ссылке и увидел бы команды типа:

collectiveExp=collectiveExp-bestExp
...
result=collectiveExp-bestExp
Причем что-то закомментировано, что-то перенесено, потому что код несколько десятков раз переделывался. Так что если ты думаешь, что достаточно фразы «оставшиеся» - это все кроме самого опытного, то ты глубоко ошибаешься. Можешь и дальше прыгать вокруг и рассказывать как просто решать задачку: твои слова не стоят ничего.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

потому что код несколько десятков раз переделывался

Ну, это говорит не о задаче а о твоём умении её решать.

firkax ★★★★★
()
Ответ на: комментарий от Xintrea

Я понимаю, что ты даже не попробовав решить эту задачу, так лихо размышляешь о том, как это просто сделать. И условие, по твоему мнению, такое понятное и простое. Но это все ровно до того момента, пока ты не докажешь, что можешь за 15 минут решить эту задачу на практике (уже не докажешь).

Попробовал. Ушло не 15 минут, а 22. Писалось в один проход без переделываний и переносов кода. Пришлось уточнить на php.net как работают его функции fgets() и strcmp() (ничего неожиданного там не увидел, но опасался вдруг они работают не так). И исправить два бага - забыл первый аргумент для explode() (пробел) и переставил $bestExp=0 на $bestExp=-1 т.к. с первым некорректно работало.

<?php
  if(!($fp=fopen('php://stdin','r'))) exit;
  $team = array();
  $all = array();
  $curT = 1;
  if(($ln=fgets($fp))===FALSE) { echo "missing N\n"; exit; }
  $N = intval($ln);
  if($N<1 || $N>300000) { echo "wrong N\n"; exit; }
  for($j=1; $j<=$N; $j++) {
    if(($ln=fgets($fp))===FALSE) { echo "missing event $j\n"; exit; }
    list($S, $T) = explode(' ',trim($ln),2);
    if(strlen($S)<1 || strlen($S)>10) { echo "wrong S at event $j\n"; exit; }
    $T = intval($T);
    if($T<1 || $T>1000000000 || $T<$curT) { echo "wrong T at event $j\n"; exit; }
    if($T>$curT) {
      $dt = $T-$curT;
      foreach($team as $name=>$time) $all[$name] += $dt;
      $curT = $T;
    }
    if(isset($team[$S])) unset($team[$S]);
    else { $team[$S] = $T; if(!isset($all[$S])) $all[$S] = 0; }
    $bestName = FALSE; $bestExp = -1; $expSum = 0;
    foreach($team as $name=>$time) {
      $exp = $all[$name];
      $expSum += $exp;
      if($exp>$bestExp || $exp===$bestExp && strcmp($name,$bestName)<0) { $bestName=$name; $bestExp=$exp; }
    }
    if($bestName===FALSE) { echo "bad input at event $j\n"; exit; }
    echo "$bestName ".($expSum-2*$bestExp)."\n";
  }

уже не докажешь

Ну, можешь не верить. Я начал после написания предыдущего коммента а после написания проги ещё 3-4 минуты писал/оформлял этот коммент.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)