Сохранен 33
https://2ch.hk/pr/res/2069556.html
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Помогите решить задачу

 Аноним 15/06/21 Втр 21:32:28 #1 №2069556 
task.png
Аноны, помогите новичку-дурачку решить задачу на JS.
Аноним 15/06/21 Втр 21:35:26 #2 №2069560 
Если я правильно понимаю, там надо пройтись циклом по значениям, которые хранит массив, сравнить их, и если совпадают, то переменная, хранящая значение "максимум людей" ++. Но как это оформить в коде, я так и не понял.
Как это записать, аноны? Выручайте, вся надежда на вас! С меня океан благодарности!
Аноним 15/06/21 Втр 21:36:58 #3 №2069562 
бамп
Аноним 15/06/21 Втр 21:40:06 #4 №2069566 
бамп
Аноним 15/06/21 Втр 21:45:06 #5 №2069574 
бамп
Аноним 15/06/21 Втр 21:51:45 #6 №2069585 
бамп
Аноним 15/06/21 Втр 22:01:00 #7 №2069606 
Хоть кто-нибудь, помогите решить эту блядскую задачу.
Аноним 15/06/21 Втр 22:17:33 #8 №2069629 
Heeeeeelp
Аноним 15/06/21 Втр 22:30:57 #9 №2069643 
Помогите
Аноним 15/06/21 Втр 23:03:31 #10 №2069673 
>>2069556 (OP)
Надо завести словарь и считать количества, потом найти максимальное.
Можно сгенерировать массив со всеми значениями, а потом найти элемент с максимумом вхождений, но это похуже.
Аноним 15/06/21 Втр 23:42:20 #11 №2069722 
>>2069556 (OP)
для каждого интервала [x, y) добавить в новый массив (x, 1) (y, 0)
отсортировать этот новый массив, заметь что я наперенно добавил второй конец с 0, чтобы в отсортированном массиве закрывались старые интервалы в начале, потому что из второго примера следует что в момент y чел уже не находится в комнате, поэтому его нужно удалить прежче чем добавлять новых людей.

дальше завести счетчик count и обойти этот массив очевидным образом.
для элемента (x, type)
if (type == 0) count++;
else {
res= max(res, count)
count--;
}

и в конце return res;


Аноним 16/06/21 Срд 01:13:42 #12 №2069778 
Вот держи, наговнокодил тебе. Ну зато без сортировки и за О(n), лол

let arr = [[2,10],[3,4], [6,9]];
let enter = [];
let exit = [];
let count = 0;
let maxcount = 0;

for (let i=0; i<arr.length;i++) {
if (enter[arr[0]]!==1)
{enter[arr[0]] = 1;}
else {enter[arr[0]]++;}
if (exit[arr[1]]!==1)
{exit[arr[1]] = 1;}
else {exit[arr[1]]++;}
}

for (let j=1; j<=24; j++) {
if (enter[j] >= 1)
count = count + enter[j];
if (exit[j] >= 1)
count = count - exit[j];
if (count > maxcount)
maxcount = count;

}

console.log(maxcount);
Аноним 16/06/21 Срд 01:19:42 #13 №2069784 
>>2069778
а теперь arr = дерьмо размером 10^6 из пар (a, b) где a, b числа от 0 до 2^64

ой, а что же делать? как получить линию?
Аноним 16/06/21 Срд 08:18:55 #14 №2069829 
>>2069778
Макаба съела индексацию. Короч, там где цикл фор двойная индексация - первый индекс равен i.
>>2069784
>arr = дерьмо размером 10^6
Ну и?
У меня один проход по этому массиву.
>где a, b числа от 0 до 2^64
Это была бы другая задача. Из условия ясно, что a, b - это время, которое может быть только от 1 до 24.
Аноним 16/06/21 Срд 08:45:22 #15 №2069839 
>>2069829
временем может быть и unix timestamp например.
или микросекунды в пределах дня и т.д.
Аноним 16/06/21 Срд 08:54:11 #16 №2069841 
>>2069839
>временем может быть и unix timestamp например.
>или микросекунды в пределах дня
Просто переводим все в часы и дальше работаем как обычно.
Проблемс?
Аноним 16/06/21 Срд 09:33:53 #17 №2069859 
>>2069841
промежуток может быть > 1 дня.
Один хуй надо уточнять условия, мб твой вариант и подразумевался.
Аноним 16/06/21 Срд 10:02:57 #18 №2069878 
>>2069859
Ну значит будет не 24 часа, а количество дней *24.
При переводе в часы сразу и запишем в таком виде.
>надо уточнять условия
Ну так там все ясно из примеров ввода.
А вообще кидай свой вариант, если знаешь как лучше.
Аноним 16/06/21 Срд 11:05:07 #19 №2069915 
image.png
Простите, что на другом языке, все-таки задача про алгоритмы, а не про особенности языка.
Скажите, пожалуйста, можно ли решить эту задачу не за квадратичное время? Я не догадался.
Аноним 16/06/21 Срд 11:36:36 #20 №2069943 
image.png
>>2069915
Обосрался, порядок важен, вот так должно быть.
Аноним 16/06/21 Срд 11:41:31 #21 №2069948 
>>2069915
Ну я вот тут решил за О(n), правда наговнокодил.
А у тебя решено неправильно.
Вот такой массив сломает твою программу
[2,7], [3,8], [4,9], [5,10]
Аноним 16/06/21 Срд 11:47:00 #22 №2069952 
>>2069948
Я уже осознал свою ошибку и исправился.
Не понимаю петушиный твой язык, можешь словами описать алгоритм? Такое чувство, что нихуя не за O(N).
Аноним 16/06/21 Срд 12:12:22 #23 №2069974 
image.png
>>2069952
там O(n) если допустить, что значения интервалов в маленьком диапазоне.

>>2069722
здесь же (на картинке то же самое) nlogn. Это оптимально для произвольных значений интервалов.
Аноним 16/06/21 Срд 12:20:04 #24 №2069988 
>>2069952
>Я уже осознал свою ошибку и исправился.
Чего ты там исправился, у тебя код такой же остался, ты зачем-то сам массив руками подогнал под код.
Аноним 16/06/21 Срд 12:22:01 #25 №2069993 
>>2069988
Вы долбоеб и ничтожество. Я поменял массив, потому что на нем первый код неправильно работал. Второй код работает правильно. Они различаются.
Аноним 16/06/21 Срд 12:30:23 #26 №2069998 
>>2069993
Пиздец ты дегенерат конченый, конечно.
Аноним 16/06/21 Срд 12:31:26 #27 №2070000 
>>2069998
Злобная и тупая мразь, вот ты кто!
Аноним 16/06/21 Срд 12:43:58 #28 №2070024 
>>2070000
Ебаный кретин, чтоб ты сдох мразь.
Рака яиц тебе, гнида
Аноним 17/06/21 Чтв 10:10:18 #29 №2070987 
image.png
>>2069556 (OP)
Аноним 17/06/21 Чтв 13:14:03 #30 №2071187 
>>2070987
а если перенести [1, 3] во втором примере в конец списка?
Аноним 17/06/21 Чтв 14:02:53 #31 №2071272 
image.png
>>2071187
Аноним 17/06/21 Чтв 16:38:45 #32 №2071474 
For fufufuf
Аноним 18/06/21 Птн 12:19:16 #33 №2072224 
For
comments powered by Disqus

Отзывы и предложения