Найс скорострел, 4 раза бампнул и окуклился. Почему он не спрашивает вопрос "ты знаешь кого-нибудь?". Тупо спрашивать про конкретного чела, когда можно за одни вопрос сразу несколько включить.
Во первых у сабжа в задаче ровно ТРИ прохода по массиву. За первый проход ты ищешь потенциальную знаменитость. За два других ты проверяешь, что знаменитость действительно знаменитость.
Во вторых у тебя асимптотика кубическая. Предлагаю самостоятельно подумать, почему.
>>258031185 >О том, что ты не прав я скажу >Почему именно я не скажу Классика. Если тебе есть что сказать, то просто говори, иначе на хуй рот открывать?)
>асимптотика кубическая Вообще лол. Значение этого знаешь хотя бы?) Показывай где она там кубическая
>>258031528 Представь, что у меня было больше времени и я описал данные в виде графа по которому двигаюсь. В этом случае не надо будет ничего удалять. Так и скажи, что сгорел и ничего лучше написать не можешь
>>258029844 (OP) Лень смотреть. А по условию знаменитость гарантированно есть и он один, или ее может не быть? Потому что если ее может не быть - мы должны будем опросить каждого о каждом А если она есть - то нам всего лишь нужно найти чувака, который никого не знает, и он будет искомым. То есть, опрашиваем каждого до тех пор, пока он не скажет, что кого-то знает, после чего шлем нахуй В чем я не прав?
>>258031895 Ты долбоеб. Решения лучше O(k) быть не может. Сначала ты говоришь, что придумал решение лучше. Тебе говорят, что ты бездарный хуесос. Дальше ты говоришь, что будь у тебя время ты бы придумал решение лучше. Когда оно будет - тогда и приходи. В виде графа он представит. Флаг тебе в руки, хуесос, граф строится в онлайне. Ебашъ блять. Напишешь - приходи. А пока ты тупой хуеглот, что обосрался
>>258029844 (OP) И сразу фейл. У тебя нет этого графа. Если он у тебя есть, то задача упрощается до неприличия, просто считаем сумму по столбцам и строкам.
>>258032264 ну так задача и состоит в частичном восстановлении этого графа путем опроса (i,j) а в коде у него для проверки сразу забит граф, но он им не пользуется, потому что такое условие
>>258029844 (OP) Рад за тебя, что будучи макакой, у тебя хорошая ЗП. В своём же примере перемести знаменитость как последний элемент массива и получишь ОЙ. Ну или тупо перемешай между собой НЕзнаменитостей. И получишь ещё один ОЙ.
>>258029844 (OP) Знаменитости это ровно те i такие что i строка нулевая а i столбец единичный (за исключением нуля на диагонали) Cчитаем две матрицы: одна M'[i,j] = 1 - M[i,j] ,вторая транспонированная M с заменой 0 на единицу на диагонали Тогда i это знаменитость если скалярное произведение i строки в первой и второй матрице == n Все манипуляции с матрицами сравнений не содержат, в итоге проходим один раз сравнивая скалярное произведение, O(n)
>>258032506 >Сложность ремапа Они на старте будут как надо подготовлены. Ты когда пишешь приложение тоже всегда как попало хранишь данные, а при каждом выполнении приводишь их в порядок в памяти?
>>258032410 Алсо, забыл добавить, что почти всегда логичность, читаемость и гарантированно верный результат будет в приоритете над сложностью или оптимизированным кодом. А вообще, ты - хуёвый программист, потому что ты решил задачу, но решил неправильно, да ещё и с помпой этим гордишься, и потом из-за таких вот дебичей плавающие баги на проде появляются.
>>258032505 В том, что селебрити 5эй элемент, когда он должен быть 6-ым, если переместить его в самый конец.
>>258030323 А тащем то где он не прав? Допустим есть какой то массив know у каждого объекта person Что нам мешает сравнить содержимое этого массива с текущим массивом person? И не нужно говорить "риииии массив know может быть большим а группа маленькой", потому что с таким аргументом можно смело слать нахуй неприятие решение с O(k^2), ибо не принципиально для малых групп. Притом если мне не изменяет память сравнение элементов двух массивов - o(logK), что как бы быстрее чем O(k) Притом в лучшем случае при подобном сравнении мы за одно сравнение находим кандидата в знаменитость
>>258032623 >Как именно это сломает скрипт? Скрипт должен находить кто из людей является селебрити. В твоём примере это тот, что с индексом 5. Если его переместить на 6 индекс, то алгоритм всё-равно покажет, что селебрити находится под индексом 5, что неправильно, задача не решена.
Задача это банальнейшая сортировка слиянием. Все описание задачи хитровыебанная абстракция, которая скрывает в себе сортировку наибольшего числа.
Человек который не знает никого но все его знает, это наибольшее число. Остальные по такой логике. 1 знает два и три. Три не знает один и два. Но два знет три. Мысль вы уловили.
Условия, все знают его, никто не знает его это завуалированная подъебка что повторяющихся числе нет.
Говнозон так проверяет наличие у вас возможности переводить абстракцию в простые задачи.
Но задавать вам их будет не говнозон а сранные вебстудии, которые под него косят. Удачи.
>>258032735 >Что нам мешает сравнить содержимое этого массива с текущим массивом person? Ничего не мешает, просто будет высокая сложность выполнения алгоритма. А так все ок
>>258032762 Если ты просто перемещаешь элемент на другое место, без изменения других данных, это значит, что ты просто портишь данные. И вся твоя претензия, получается, состоит в том, что скрипт упал когда ему дали на вход неправильные данные. Да, это есть
>>258033004 ОП блядь ты заебал. Найди себе уже место джуна, и поработай хотя бы полтора годика, потом уже думай что тебя в гугле с амазоном спросят. Один хуй без опыта ты дальше хрюши не пройдешь.
А в такие конторы что бы там кто не бухтел что вышка не нужна, в том же гугле из РФ только выпускники МФТИ да МГУ одни. Какое совпадение, блядь.
>>258033076 >в том же гугле из РФ Охуительно наглый пиздеж Как минимум двух человек знаю без вышки вообще, один устроился в 19 лет в прошлом году Но это скорее исключение большинство дейсвительно с вышкой и большинство даже крутые ребята, а не задрочившие алгоритмы
>>258033034 Ты только по одному элементу можешь за раз получить для сравнения, то есть, если у человек знает всех, тебе надо будет у него про каждого человека отдельно интересоваться
>>258033217 Ладно, ОП, я пошутил, я получаю еще меньше. Надеюсь у тебя все будет хорошо. Учись развивайся. Не перегорай, забивай хуй на свою жизнь как я. Спокойной ночи. Удачи, и успехов. А я пойду спать.
>>258033191 Тут уже вопрос выборки изначальных данных, но я понял твою мысль. Просто с тем же успехом ты можешь "выключить" сразу половину группы, так что таки да, это алгоритм с не стабильным временем выполнения, но таки выигрывающий на больших выборках. А на маленьких тебе таки просто насрать, хоть перебором делай, разница будет незаметна. Хотя хули толку задача синтетическая и код будет написан в прод перебором просто потому что читать этот код в будущем будут идиоты. И опять же ты наебешься с contains(element) в оригинальном решение, он медленный и я даже с этим наебывался
>>258032764 По факту проще всего, и самым не быдляцким методом, для людей которые имеют хотя бы вышку в процганье, а не мамкины веб-макаки, будут битовые флаги, а там уже даже сортировка не нужна, лол.
1 << 0 1 << 1 1 << 2
Далее просто находишь ебальник у которого флаги = 0.
>>258033860 Нет, его я просто удалял, так как он не может быть знаменитостью, а потом переходил на следующий еще не проверенный элемент. Скидывай, а то я скоро спать. Хочу посмотреть что там
public List<BigInt> findCommonLinks(List<Person> groupPersons){ Set groupSet = groupPersonsId.toSet(); return linked.stream().filter(i->groupSet.contains(i)).collectToList(); } }
class Solution{
List<Persons> group;
psvm(){ set ignore; possibleStar; foreach person in group{ if(!ignore.contain(person)) links = person.findCommonLinks(group); if(links.isEmpty()) if(possibleStar!=null) return noStarsHere; posibleStar = person; if(links.size<group.size) ignore.addAll(getUncommonLinks(links)); // вот где то тут мы можем отбросить огромную часть значений а можем и не отбросить, да } return checkStartLikeInVideo(possibleStar); } }
>Чтобы не усложнять код Так у тебя знаменитость, нихуя не знаменитость, он сам себя не знает, переделывай так, чтобы он игнорил тогда то что знаменистость себя мог знать, он же других не может знать, а без этого значит что его не все знают.
>>258034615 Просто добавь к каждому отношения к шестому, и все готово, количество итераций не превышает количества лиц. Если шестой знает сам себя, то придется каждого обходить и через маску вытаскивать знает ли он шестого, но я напомню что операции со строками еще более затратны чем применение битовых масок, ибо на применение битовой маски тратится ровно ОДИН такт процессора :)
>>258034693 Там проблема только в одном будет по факту, что ты максимум можешь иметь 32 ебальника, при unsigned int, и 64 ебальника при unsigned long long
Посмотрел условие. Так вот, надо у одного спросить, кого из люлей он знает, допустим, знает он двух. Потом спросить этих двух, если сразу попали на знаменитость, то получается, в 2 шага решение..
>>258032553 Бывает, данные хранятся в обобщённой структуре для нескольких сервисов, но каждый из них маппит под нужный формат. И тут финт "да там уже в каком надо формате" не сработает.
Ок, но у тебя: 1) захардкоден вариант с шестью человеками 2) нет проверки знают ли все остальные чела, который не знает никого 3) наивное предположение, что данные придут именно в формате двумерного массива
> Какая у меня зп я даже говорить не буду, чтобы вас не расстраивать