![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
tishaishii |
|
||||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Задача:
Есть несколько ёмкостей X(n), допустим, с водой, бесконечного объёма, но заполненных по-разному. Переливать воду между вёдрами нельзя. Есть ещё одна ёмкость Y, заполненная водой на L литров. Сколько литров из Y надо вылить в каждую X(n), чтобы расхождение объёма содержимого в ёмкостях X(n) было минимальным? Оперируем целыми числами. Вот решил так:
Суть:
Есть ли другие решения кроме такого постепенного добавления? Как вычислить в одно действие для каждой ёмкости, сколько в неё надо долить? |
||||
|
|||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Немного неравномерное распределение у тебя получается.
А если так:
|
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Хорошо, а есть ли формула, чтобы в одно действие узнать в какоге ведро сколько надо долить?
|
|||
|
||||
AlexPet |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 5.12.2007 Где: Брянск Репутация: 1 Всего: 1 |
||||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
||||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Для непрерывного случая (распределение воды по ведрам представлено неубывающей функцией f(i)) надо найти х в уравнении.
|
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Хреново... Много времени занимает.
|
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
В дискретном варианте, насколько я понимаю, решение сведется к нахождению минимального $i, при котором перестанет соблюдаться неравенство
$L - объем добавленной воды левая часть неравенста - получившийся после добавления уровень воды в первых ($i+1) ведрах Не обязательно решать это неравенство перебором $i начиная с 0. Есть же всякие продвинутые алгоритмы, простейший - методом деления пополам. Если "ведер" очень много, получится гораздо быстрее. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |