Предположим, вам даны n монет, некоторые из которых тяжелые, а остальные свет. Все тяжелые монеты имеют такой же вес, как и все легкие монеты, и вес тяжелой монеты строго больше веса легкой монеты. Как минимум одна из монет известна как свет. Вам дается баланс, , с помощью которого вы можете взвесить подмножество монет против другого непересекающегося подмножества монет. Покажите, как вы можете определить количество тяжелых монет с использованием взвешивания O (log2 n).Поиск всех тяжелых монет в 0 (log^2 (n))
ответ
Я думаю, это должно быть обобщением проблемы, когда у вас есть 8 монет, а один из них свет. Таким образом, вы можете выполнить своего рода бинарный поиск, чтобы найти самую легкую монету, используя пару балансов весов. Тем не менее, странно, что вы должны одновременно найти несколько легких монет. В этом случае это, похоже, не масштабируется с помощью log2 n.
См. Пример ниже, чтобы понять мою точку зрения. В случае 8 монет, где один из них светлый. Вы должны выполнить три этапа:
Шаг 1) Разделите образец на две части и найдите самую легкую часть. => 1 взвешивание. [У вас есть образец с 4 монетами, которые легче)
Шаг 2) Разделите самую легкую часть предыдущей процедуры и весьте эти части, чтобы найти самую легкую часть. => + 1 вес [у вас есть образец с 2 монетами]
Шаг 3) Теперь у вас есть только две монеты. Вы должны только весить их, чтобы найти самый легкий.
Конечно, обобщение на образец размера n тривиально.
Доказательство того, что эта шкала с log2 n следует за двоичным поисковым доказательством.
Однако, если количество светлых монет отличается от 1, вы не можете сфокусироваться только в самой легкой части образца. [Отказ: Возможно, я ошибаюсь, но трудно сказать, что это будет масштабироваться с помощью log2 n. Например, рассмотрим ситуацию, когда количество света монет масштабируется с п (количество монет)]
На самом деле, самое красивое решение этой проблемы, чтобы найти самую легкую монету всего два взвешиваний:
Шаг 1) Разделите ваш образец на 3 части. Первая часть состоит из трех монет, вторая часть также имеет три монеты, а последняя - только 2.
Шаг 2) Вес первой и второй частей. Существует три ситуации:
a) Первая часть легче.
б) Вторая часть легче.
c) Первая и вторая части имеют одинаковый вес.
Если (a или b), проследите два из них. Если они имеют одинаковый вес, то другой, который не был взвешен, легче. С другой стороны, если они не имеют такого же веса, то один из них является лихтером
если (c) просто весом двух монет, чтобы найти более легкий.
Это также может быть обобщено, но обобщение намного сложнее.
См. Эскиз в связанном дубликате. Одним из способов обобщения вопроса было бы попросить _find_ все поддельные монеты. Но этот вопрос просто требует подсчета всех поддельных монет, что является более простой проблемой. –
- 1. Двоичный поиск O (log2 (n)) Изменение базы
- 2. Почему мой бинарный поиск требует дополнительного сравнения? log2 (N) +1
- 3. Не считая всех монет
- 4. быстрого внедрение log2 (INT) и log2 (поплавок)
- 5. Отсрочка всех тяжелых вычислений с использованием SetTimeout
- 6. Меморандум о замене монет
- 7. Отслеживание всех собранных монет Swift 3
- 8. Поиск всех возможных способов выбора элементов «n» из списков «n»
- 9. Анализ/оптимизация тяжелых вычислений
- 10. Я пытаюсь найти алгоритм для слияния m отсортированных списков (из всех n элементов) в n log2 m runtme
- 11. монет изменения в C# с ограниченными монет
- 12. Использование JLabel для подсчета всех монет?
- 13. Python - Поиск местоположения всех элементов x в n-мерном списке
- 14. Учитывая, что монеты, некоторые из которых тяжелее, находят количество тяжелых монет?
- 15. Поиск количества способов сделать сумму в смене монет?
- 16. Поиск массивов, где сумма равна 0 mod n
- 17. Алгоритм смены монет
- 18. Все возможные комбинации монет
- 19. Преобразование массива n на 0 в 0 по n массиву
- 20. Поиск одна монета N в д шаги
- 21. Обработка тяжелых сценариев Python
- 22. Поиск всех возможных путей длины n в гексагональной сетке
- 23. Поиск всех дубликатов в массиве
- 24. Поиск наибольшего квадрата в сетке n * n
- 25. 3SUM (поиск всех уникальных триплетов в списке, который равен 0)
- 26. Решение для замены монет DP для отслеживания монет
- 27. вычисления log2 логарифм в Java
- 28. log2 в математическом модуле python
- 29. Поиск ячеек, содержащих значения \ N и заменяя их с 0
- 30. Преобразовать число их log2
Мне нравятся домашние вопросы, где плакат не проявил никакой мысли –
http://stackoverflow.com/questions/16748903/given-n-coins-some-of-which-are-heavier-find-the-number- of-heavy-coins? rq = 1 –
Это то же самое, что и выше, но я не могу решить и придумать необходимые алгоритмы –