Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 01.05.2021
Сообщений: 5

Задача поиска подмножеств с минимальной суммой Amazon

01.05.2021, 16:22. Показов 4868. Ответов 41

Студворк — интернет-сервис помощи студентам
Есть список задач - массив чисел. Каждое число представляет собой сложность задачи. Задачи идут в строгом порядке, который нельзя менять. Так же дано количество дней. Сложность дня определяется самой сложной задачей, решенной в этот день. 
Нужно написать функцию, которая разобьет задачи по дням так, чтобы общая сложность (сумма) было минимальная. 


Пример 1:

Задачи [3, 1, 4, 2, 5]
2 дня.

Решение:

первый день [3] -> 3, 

второй день [1, 4, 2, 5] -> 5 (т.к. Сложность дня определяется самой сложной задачей)
3 +5 = 8


Пример 2:

Задачи [2, 4, 7, 3, 5, 1, 6]
3 дня.

Решение:

первый день [2] -> 2,

второй день [4] -> 4
Третий день [73516] -> 7
2+ 4 + 7 = 13


Ищу идеи для решения сложностью меньше O(n^m)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.05.2021, 16:22
Ответы с готовыми решениями:

Задача по массивам. Найти строку с минимальной суммой и поставить ее на место первой строки
Дана матрица размерностью NxM. Найти строку с минимальной суммой и поставить ее на место первой строки. Заранее спасибо!

Найти столбец с минимальной суммой и вывести столбец с минимальной суммой
Найти столбец с минимальной суммой и вывести столбец с минимальной суммой

В заданной матрице поменять строку с минимальной суммой со строкой с максимальной суммой
помогите с кодом

41
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
08.05.2021, 12:28
Студворк — интернет-сервис помощи студентам
vrm2,
Я взял цикл из твоей программы, только вместо переменной end использую k = end - start.
0
1859 / 1049 / 194
Регистрация: 24.02.2013
Сообщений: 3,173
Записей в блоге: 12
12.06.2021, 10:46
Цитата Сообщение от munchkin Посмотреть сообщение
Каждое число представляет собой сложность задачи. Задачи идут в строгом порядке, который нельзя менять.

Как понимать это требование. Ведь оно ни разу не использовалось в приведенных алгоритмах?
0
431 / 302 / 90
Регистрация: 03.12.2015
Сообщений: 741
12.06.2021, 12:07
Цитата Сообщение от Nacuott Посмотреть сообщение
Как понимать это требование. Ведь оно ни разу не использовалось в приведенных алгоритмах?
Так и понимать, что порядок задач в списке менять нельзя. Т.е. список задач представляет именно список, и нам его надо разрезать на n частей.

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

Задачи [2, 4, 7, 3, 5, 1, 6]
3 дня.
Ответ [{1}, {2}, {3,4,5,6,7}] => 1 + 2 + 7 = 10
0
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
12.06.2021, 14:49
Цитата Сообщение от munchkin Посмотреть сообщение
Ищу идеи для решения сложностью меньше O(n^m)
Откуда такое большое число?

Пусть M - количество задач, N - количество дней.

Тогда количество вариантов разбивок будет равно n = n * ( n + 1) / 2, где n = M - N + 1

Множим на число циклов поиска суммы максимумов - и как-то все равно получается чуточку меньше...

Добавлено через 11 минут
то есть просто максимумов
0
1859 / 1049 / 194
Регистрация: 24.02.2013
Сообщений: 3,173
Записей в блоге: 12
12.06.2021, 15:56
Цитата Сообщение от vrm2 Посмотреть сообщение
Так и понимать, что порядок задач в списке менять нельзя. Т.е. список задач представляет именно список, и нам его надо разрезать на n частей.
Ясно, но из условия задачи это не очевидно.
0
431 / 302 / 90
Регистрация: 03.12.2015
Сообщений: 741
13.06.2021, 14:39
Цитата Сообщение от vantfiles Посмотреть сообщение
Откуда такое большое число?
Если имеем N задач и K дней, то у нас есть (N-1) мест, где мы можем разрезать список, из которых нужно выбрать (K-1).

Количество возможных вариантов по формуле сочетаний равно https://www.cyberforum.ru/cgi-bin/latex.cgi?C^{k-1}_{n-1}, что близко к n^k
0
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
13.06.2021, 18:01
Цитата Сообщение от vrm2 Посмотреть сообщение
Количество возможных вариантов
м??
0
431 / 302 / 90
Регистрация: 03.12.2015
Сообщений: 741
14.06.2021, 00:57
Цитата Сообщение от vantfiles Посмотреть сообщение
м??
Что "м??"
0
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
14.06.2021, 07:27
Цитата Сообщение от vrm2 Посмотреть сообщение
Если имеем N задач и K дней, то у нас есть (N-1) мест
K-1

Добавлено через 3 минуты
Кликните здесь для просмотра всего текста
1 2 3 4 5 6 7 8 9

1 1 7
1 2 6
1 3 5
1 4 4
1 5 3
1 6 2
1 7 1
2 1 6
2 2 5
2 3 4
2 4 3
2 5 2
2 6 1
3 1 5
3 2 4
3 3 3
3 4 2
3 5 1
4 1 4
4 2 3
4 3 2
4 4 1
5 1 3
5 2 2
5 3 1
6 1 2
6 2 1
7 1 1

9 3 -- 28


Это далеко не 9^3
0
431 / 302 / 90
Регистрация: 03.12.2015
Сообщений: 741
14.06.2021, 14:42
Цитата Сообщение от vantfiles Посмотреть сообщение
K-1
Нет, все верно. У нас есть (N-1) мест, где мы можем разрезать список. А не (K-1).

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

Цитата Сообщение от vantfiles Посмотреть сообщение
Это далеко не 9^3
В вики https://en.wikipedia.org/wiki/Binomial_coefficient в разделе "Bounds and asymptotic formulas" указаны формулы асимптот. Например, можно рассмотреть случай: 1000 задач, 10 дней.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
14.06.2021, 15:25
Цитата Сообщение от vantfiles Посмотреть сообщение
9 3 -- 28
8!/(6!*2!) = 8*7/2 = 28

Цитата Сообщение от vantfiles Посмотреть сообщение
Пусть M - количество задач, N - количество дней.
Тогда количество вариантов разбивок будет равно n = n * ( n + 1) / 2, где n = M - N + 1
Максимум n достигается при N=1? При N=1 у нас 1 вариант разбиения (все задачи в один день).
0
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
18.06.2021, 14:19
Цитата Сообщение от Shamil1 Посмотреть сообщение
8!/(6!*2!) = 8*7/2 = 28
Shamil1, да, формулу я вывел неверно. Не могли бы пояснить свою? Как от факториалов произошел переход к таким малым числам?

Добавлено через 35 минут
Цитата Сообщение от vrm2 Посмотреть сообщение
что близко к n^k
1000 задач и 1000 дней -- это один вариант. Откуда n^k ?

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

Добавлено через 12 минут
а, формула n! / ( k! * ( n - k )! )

ну очевидно же, что это далеко не n^k

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

Добавлено через 8 минут
нет, тоже не сходится...

Добавлено через 56 секунд
Коллеги, кто-нибудь может показать правильную формулу для количества вариантов разбиений?
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
18.06.2021, 16:50
Цитата Сообщение от vantfiles Посмотреть сообщение
Не могли бы пояснить свою?
Количество способов выбрать (K-1) "мест между задачами" из (N-1) "мест между задачами":
Цитата Сообщение от vrm2 Посмотреть сообщение
Если имеем N задач и K дней, то у нас есть (N-1) мест, где мы можем разрезать список, из которых нужно выбрать (K-1).
Цитата Сообщение от vantfiles Посмотреть сообщение
ну очевидно же, что это далеко не n^k
Максимальное значение при k = n/2 при больших n примерно равно:
2n/sqrt(n*PI/2)
Это не nk, но всё равно много.
0
431 / 302 / 90
Регистрация: 03.12.2015
Сообщений: 741
18.06.2021, 17:07
Цитата Сообщение от vantfiles Посмотреть сообщение
а, формула n! / ( k! * ( n - k )! )
Эту формулу я и приводил Вам ранее - это формула количества сочетаний C(n;k).

Цитата Сообщение от vantfiles Посмотреть сообщение
ну очевидно же, что это далеко не n^k
Также давал ссылку на формулы асимптот для этой функции C(n;k)
n^k - одни из вариантов асимптоты, точнее n^k / k!

Например для больших n и маленьких k реальное значение будет много ближе к n^k, чем к n^2, предложенное Вами.
Для того, чтобы Вы могли убедиться в этом, я и предложил рассмотреть случай n=1000 и k=10
0
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
18.06.2021, 17:15
Цитата Сообщение от Shamil1 Посмотреть сообщение
Если имеем N задач и K дней, то у нас есть (N-1) мест, где мы можем разрезать список, из которых нужно выбрать (K-1).
А вот это ничего не меняет:

Цитата Сообщение от munchkin Посмотреть сообщение
Задачи идут в строгом порядке, который нельзя менять.
?

Добавлено через 2 минуты
Цитата Сообщение от vrm2 Посмотреть сообщение
это формула количества сочетаний C(n;k).
С учетом запрета на изменение порядка задач эта формула остается?
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
18.06.2021, 17:25
Цитата Сообщение от vantfiles Посмотреть сообщение
А вот это ничего не меняет:
Это учитвается. N задач - поэтому N-1 "мест между задачами". И в любом из них мы можем закончить очередной день.

Цитата Сообщение от vrm2 Посмотреть сообщение
Например для больших n и маленьких k реальное значение будет много ближе к n^k,
Для маленьких k неинтересно. Например, для k=2 имеем nk = n2
0
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
18.06.2021, 17:44
Цитата Сообщение от Shamil1 Посмотреть сообщение
И в любом из них мы можем закончить очередной день.
10 задач, 3 дня. В первый день выполняем 9 задач. Дальше как разбиваем?

Добавлено через 11 минут
Цитата Сообщение от Shamil1 Посмотреть сообщение
Например, для k=2 имеем nk = n2
4 задачи, 3 дня. Разбивки:

112
121
211

Что с формулой не так?
0
431 / 302 / 90
Регистрация: 03.12.2015
Сообщений: 741
18.06.2021, 18:41
Цитата Сообщение от vantfiles Посмотреть сообщение
4 задачи, 3 дня. Разбивки:
112
121
211
Что с формулой не так?
С формулой все так. Количество равно 3! / (2! * (3-2)!) = 6 / (2*1) = 3

P.S. Нужно читать не только ответ Shamil1, но и контекст, в котором ответ дан
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
18.06.2021, 20:55
Цитата Сообщение от vantfiles Посмотреть сообщение
10 задач, 3 дня. В первый день выполняем 9 задач. Дальше как разбиваем?
В первый день выполнить 9 задач не получится.

9!/(7!*2!)
У нас есть 9 ямок, в которые можно положить 2 мячика. Сначала раскладываем мячики по ямкам, а потом считаем, сколько там задач получилось в первый день.

Добавлено через 26 минут
Цитата Сообщение от vantfiles Посмотреть сообщение
Что с формулой не так?
Ваша формула верна для трех дней.
(M-1)!/(M-1-2)!/2! = (M-1)(M-2)/2 = n * ( n + 1) / 2, где n = M - 3 + 1
0
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
19.06.2021, 14:24
Shamil1, vrm2, не сочтите за занудство, я реально не могу понять ваши выкладки.

Цитата Сообщение от vrm2 Посмотреть сообщение
С формулой все так. Количество равно 3! / (2! * (3-2)!) = 6 / (2*1) = 3
Объясните, пожалуйста, в какую формулу и что именно Вы подставляете.
Откуда при "4 задачи, 3 дня." в формуле появляется двойка?

Цитата Сообщение от Shamil1 Посмотреть сообщение
У нас есть 9 ямок, в которые можно положить 2 мячика.
Хорошая аналогия. Вот только у нас есть 3 ямки и 10 мячиков. И еще нельзя менять порядок их раскладки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.06.2021, 14:24

В двумерном массиве поменять местами строку с максимальной суммой с минимальной суммой
Нам задали написать 2 различные проги для такого задания В двумерном массиве поменять местами строку с максимальной суммой с минимальной...

Столбец матрицы с минимальной суммой элементов поменять со столбцом с максимальной суммой
#include <math.h> #include <locale.h> #include <stdio.h> #include <stdlib.h> #include <conio.h> using namespace std; main() {...

В целочисленной матрице поменять местами столбец с минимальной суммой со столбцом с максимальной суммой
Дана прямоугольная матрица nxm целых чисел (n,m<10 – ввод с клавиатуры, значения элементов массива в диапазоне – вводятся случайным...

Массив: В произвольно заданной матрице размера 4*6 определить строку с максимальной суммой элементов и столбец с минимальной суммой.
В произвольно заданной матрице размера 4*6 определить строку с максимальной суммой элементов и столбец с минимальной суммой.

Разбиение множества на k подмножеств с одинаковой суммой
Можете привести примеры, где это можно использовать в жизни, пожалуйста. Примера 3-5.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru