Fail
можно написать функцию перехода в состояние n
Анна
Оптимальная стоимость найма k рабочих на n-й неделе:
F(n, k) = min (F(n-1, k-m) + D(m)),
где m - разница в количестве рабочих, может быть отрицательной, аккуратно надо. n - номер недели. k - количество рабочих, D(m) - стоимость найма разницы. И не надо брать клетки, где рабочих меньше, чем запрос на текущую неделю.
Анна
может быть, можно и проще, но это кажется сработает, только аккуратно написать
Nikolay
Блин, это просто
Nikolay
Но я не могу мысль уловить :D
Nikolay
Nikolay
Типа такого?
Nikolay
Fail
но ведь в случае, если мы нанимаем - мы платим 400 долларов сверху
Fail
а если увольняем - только содержание оставшимся
Анна
Типа такого?
Да, только мне трудно на ночь глядя числа проверять. Смысл в том, что нанять лишнего заранее может оказаться выгоднее. Поэтому ты для каждой следующей недели берешь возможные количества нанятых и пробуешь нанять ещё или уволить. И смотришь минимум
Fail
формулы получаются сильно разные
Nikolay
Nikolay
Или уволить не всех
Fail
то есть для найма
400 + (n*200)
Nikolay
Nikolay
По условию нихрена не понятно
Fail
а ведь еще мы можем перейти на следующую неделю с избытком рабочих
Fail
Nikolay
Fail
Nikolay
А второй столбец как заполнять, чёт не пойму 🤔
Nikolay
Вторую неделю
Анна
сейчас
Анна
Анна
На примере одной клетки из второй недели нарисовала
Анна
Плохо видно карандаш правда
Анна
Romɑn
Во флудилка 150 сообщений!
Vladislav
Анна
Надо собраться с мыслями и нарисовать формулы обобщённые, или уже норм?
Romɑn
123 факультеты 567 курсы и один 7 с 4 факультета
Nikolay
Nikolay
Я вроде примерно понял
Анна
Romɑn
Анна
Анна
Формула такая получилась, вроде не напутала ничо
Romɑn
Russia
В росспиртппроме рассказывали что часто именно так. Кстати в ВТБ когда работал, люди которые делали "ничего" получали тоже значительно
Анна
Простите за псевдо- F#
Nikolay
Я щас на F# пытаюсь набросать
Nikolay
Сложна
Romɑn
Анна
Не для а in
a - это список необходимых количеств рабочих по дням недели
Анна
когда мы для недели номер n считаем, перебираем возможные количества рабочих начиная с a[n-1] и больше, потому что меньше смысла нет
Анна
и считаем за них убытки, если они лишние, и стоимость найма недостающих, чтобы на следующей неделе получилось k рабочих
Анна
в клеточку n, k мы можем разными способами попасть, выбираем наиболее выгодный
Romɑn
Так так так.
@AnutaU а через сколько бросков сломанной монетки(которая всегда выпадает орлом) мы можем понять что она сломанная?
Анна
Анна
Про круглые люки главное не спрашивайте
Romɑn
Nikolay
Тут интересную фигню придумал
Romɑn
Анна
Nikolay
Как инициализировать двухмерный массив в F#, с lazy элементами, которые возвращают значения из других ячеек этого же массива?
Nikolay
Без использования mutable :)
Romɑn
Оу
Nikolay
Круто, да? :)
Анна
Без использования mutable :)
я подозреваю, что без mutable никак. Либо ты фигачишь циклом по табличке, либо пишешь рекурсию с мемоизацией. мне кажется, где-то надо запоминать посчитанное всё равно
Nikolay
Ну это получается что-то типа рекурсивного массива)
Nikolay
Romɑn
Некий seq |> Array.ofSeq
Анна
Да
где-то будет всё равно mutable state запрятан же всё равно, или я туплю?
Nikolay
Хотя по идее может рекурсия даже возникнуть :)
Анна
видимо, в реализации lazy библиотечного
Nikolay
Ну да, в реализации там должно быть такое
Romɑn
А вложенность этих ссылочных ячеек какая?
Nikolay
Nikolay
У меня вообще идея эта возникла, когда думал о решении этой задачи, типа сделать таблицу с lazy элементами, которые будут лазить в другие ячейки, и рассчитывать значения
Nikolay
Но это слишком сложно
Romɑn
Всмысле?
Всмысле одна ячейка ссылается на вторую - вложенность 1. Одна ссылается на другую а та на третью - вложенность 2
Nikolay
Но чисто как отдельная задача с элементами массива внутри lazy, показалось интересной, вот и поделился
Romɑn
И т.д. а то может массив из n элементов а значение всего одно
Nikolay
Анна