Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
 Аватар для tottukki
0 / 0 / 0
Регистрация: 27.01.2018
Сообщений: 37

Binary search(c++ )

18.02.2018, 16:27. Показов 3146. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Расположены стойла коров, необходимо расставить коров так, чтобы минимальное расстояние между коровами было как можно больше.

В первой строке вводятся числа Н (3 <=Н <= 10 000)- кол-во стойл и К (2 <= К < Н)- количество коров
во второй строке задаются Н натуральных чисел в порядке возрастания - координаты стойл(не более 10^9)

Выведите одно число- наибольшее возможное допустимое расстояние

пример:
ввод:
5 3
1 2 3 100 1000
вывод:
99
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.02.2018, 16:27
Ответы с готовыми решениями:

Binary search(c++ )
Петя, изучая, как меняется курс рубля по отношению к доллару и евро, вывел закон, по которому происходят эти изменения. По этому закону...

Binary Search
нужно отобразить значения first, last, middle на каждой стадии цикла и кол-во сравнений. кол-во сравнений неправильно отображает....

Объясните код (binary search)
Всем привет! Вот есть код, осуществляющий бинарный поиск: auto beg = text.begin(), end = text.end(); auto mid = text begin() + (end...

8
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
18.02.2018, 21:22
tottukki, а можно оригинал условия?
0
 Аватар для tottukki
0 / 0 / 0
Регистрация: 27.01.2018
Сообщений: 37
19.02.2018, 16:49  [ТС]
такое условие и было задано
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
19.02.2018, 19:51
tottukki, бинарный поиск тут нипричем.

1. Считываешь координаты стойл.

Нам надо расставить коров так чтобы расстояния между ними были максимальным. Перефразируем, нам надо выбрать https://www.cyberforum.ru/cgi-bin/latex.cgi?N-K стойл таких, что соеденяют соседние стойла, которые находятся ближе всего друг к другу.

2. Рассмотрим структуру данных, которая говорит нам растояния между близжайшими вершинами и выполним 2 объеденения отрезков которые дают минимальные расстояния между вершинами

Code
1
2
3
4
5
6
7
1   2   3  100   1000
 \ / \ / \ / \   /
  1   1   97  900
   \ /   /
    2   /
     \ /
      99
Сначала объеденяем отрезки 1,2 и 2,3, это нам дает отрезок 1,3 чья длина равняется 2м. Далее, объеденяем отрезки 1,3 и 3,100 что дает нам отрезок 1,100 длиной 99.

Какую структуру надо испльзовать и ее реализацию ищи сам. Вроде, можно использовать дерево отрезков, но это не точно (:
0
 Аватар для tottukki
0 / 0 / 0
Регистрация: 27.01.2018
Сообщений: 37
19.02.2018, 20:09  [ТС]
я немного ошибся в названии. я рассматриваю задачу через greedy. на счет tree к сожалению пока нельзя реализовывать, но идея вроде понятна. thnks)
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
19.02.2018, 20:11
Цитата Сообщение от tottukki Посмотреть сообщение
минимальное расстояние между коровами
Крутите бинарный поиск по вот этой штуке и проверяете возможно ли всех коров уместить(это делается одним циклом).
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
19.02.2018, 20:44
Цитата Сообщение от Новичок Посмотреть сообщение
возможно ли всех коров уместить
Как проверить то?
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
19.02.2018, 20:56
В начале берем первую корову и ставим ее в первое стойло. Прибавляем к координате текущего стойла минимальное расстояние и ищем следующее стойло у которого координата будет не меньше. И.т.д пока не расставим К коров.
1
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
19.02.2018, 23:47
Вообще, задача на типичное динамическое программирование же (как задача о рюкзаке).

Переформулируем задачу:
Пусть у нас H стойл, работаем начиная с start-ового.
Пытаемся уместить K коров.
Пусть h = (H-start)
1. Если K<h, возвращаем -1
2. Если пара K, h была, возвращаем сохранённое значение её.
3. Если K==h, возвращаем сумму расстояний среди стойл с индексами [start..H)
4. Если K>h, то для стойл с пытаемся поставить одну корову в позиции i в [start, start + (K-h)], потом для каждой позиции подсчитываем расстояние между start и i, затем вызываем ту же функцию для H, K-1, i+1. Возвращаем максимальное.

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

В ответ выводим f(H, K, 0).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.02.2018, 23:47
Помогаю со студенческими работами здесь

Binary search(C++) amount of steps
Вася стоит во дворе, что представляет собой прямоугольное поле размером н × м клеток, а каждая клетка имеет координаты (а, б)...

error C2679: binary '='
Здравствуйте! Во время сборки проекта вылезают ошибки вида: MyCode.cpp(1234): tmp_bit=*((DWORD*)buf); (&quot;=&quot; подчеркнут...

EOF и char (-1) binary file
есть бинарный файл в котором есть байты, в том числе (-1)dec как я могу понять, что цикл достиг EOF , а не рядового значения (-1) ? как...

ofstream std::ios::binary
почему не сохраняет в бинарном виде? std::ofstream out_m(str_m, std::ios::binary); for(int i = 0; i &lt; counter_m; i++) { tmp_m =...

Read and write binary file
Ребята, срочно нужна помощь. Записываю класс Message с сообщениями в файл. struct Head { public: int who; int to; ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru