|
2 / 2 / 1
Регистрация: 04.02.2017
Сообщений: 31
|
|
Задача "Столица"16.04.2017, 11:42. Показов 4858. Ответов 14
В некотором царстве, в некотором государстве было N городов, и все они, судя по главной карте императора, имели целые координаты. В те годы леса были дремучие, дороги же строить умели только параллельно осям координат, так что расстояние между двумя городами определялось как |x1 - x2| + |y1 - y2|. Император решил построить N+1-ый город и сделать его столицей своего государства, при этом координаты столицы также должны быть целыми. Место для столицы следует выбрать так, чтобы среднее арифметическое расстояний между столицей и остальными городами было как можно меньше. Однако, разумеется, столицу нельзя строить на месте существующего города. Нелегкая задача выбрать место для столицы поручена Вам.
Ввод Первая строка содержит число N (1 ≤ N ≤ 100). Следующие N строк содержат координаты городов - пары целых чисел, не превышающих 1000 по абсолютной величине. Вывод Выведите два целых числа - координаты точки, где следует построить столицу. Если решений несколько, выведите любое. Ввод 4 0 0 1 1 0 1 1 0 Вывод 0 -1 , Можете написать программу на с++ или хотя бы алгоритм показать как надо решить?
0
|
|
| 16.04.2017, 11:42 | |
|
Ответы с готовыми решениями:
14
Столица
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||
| 16.04.2017, 12:30 | |||
|
Добавлено через 13 минут Поясню, что я имею в виду под "медианой". Для ряда 0 3 4 25 100 1000 1001 медианой будет 25 Для ряда 0 3 4 25 100 1000 1001 2000 "медианными" значениями будут 25 100. В первом случае столицу нужно строить в точке 25. Во втором - в любой точке 25 <= x < 100. Аналогично по координате Y. Но в данном случае дело осложняется тем, что "хорошие" точки уже могут быть заняты существующими городами. Тогда, наверное, подойдет любая ближайшая (в смысле заданной метрики) незанятая точка.
1
|
|||
| 16.04.2017, 14:37 | |
|
devcpp
Вам надо найти минимум функции |x - x1| + |x - x2| + ... + |x - xN| + |y - y1| + |y - y2| + ... + |y - yN| поскольку |x| <= 1000 и |y| <= 1000 , то простой перебор решит эту задачу. Дополнительно вам нужно задать два массива содержащие координаты x1, x2,....y1, y2, ... Эти массивы нужны также, чтобы пропустить координаты существующих городов. ... Меня заинтересовала эта задача. Пожалуй её можно решить быстрее. Как? Надо сделать два перебора. Отдельно по икс и Отдельно по игрек. Две минимальные величины и дадут координаты столицы.
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 16.04.2017, 16:13 | ||
|
Смотрите. Пусть есть ряд 1 20 100. В точке 20 сумма расстояний = 99 А в точке 21 - 100. При сдвиге направо от любой точки расстояние до точек расположенных левее увеличивается. До точек расположенных правее уменьшается на то же дельта (до каждой) Вот и вся высшая математика.
1
|
||
| 16.04.2017, 17:34 | |
|
Славный Байт,
Вы меня извините, но что вы подразумеваете под СЕРЕДИНОЙ? Элементы статистики тут не пройдут. Города могут быть в одной куче (или в двух) где-нибудь с краю. Вы мне друг, но истина тоже мой друг. Давайте жить дружно. Может я ошибаюсь. Вы не могли бы на примере трёх городов указать на мои ошибки? Буду очень вам благодарен.
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 16.04.2017, 18:21 | ||
Сообщение было отмечено echs как решение
РешениеВот координаты городов 1 2 4 5 10 40 50 100 Столицу надо строить между городами 5 и 10. И нигде больше. Попробуйте ее сместить в точку 3 посмотрите, что получится (хоть там и сгущение) Вообще, поставьте столицу в любую точку. И посмотрите, что происходит с расстояниями, как они изменяются при ее смещении на 1 км влево или вправо. И что происходит при перепрыгивании через какой-то город. А вот нечетная ситуация 1 3 25. Если бы не ограничение (тоже мне, Петр Первый нашелся!) столицей должен стать город в точке 3. Но поскольку мы не можем идти против воли Его Величества, то строить будем на 2-м или 4-м километре (без разницы) Добавлено через 5 минут Может быть вас лучше убедит (и проще считать) крайний случай - 2 города. Так вот тут столицу можно строить в любом месте отрезка их соединяющего. Сумма расстояний все равно будет равной длине отрезка. А для двумерного случая - в любой точке прямоугольника (включая границы), противоположными вершинами которого будут эти города. Не поленитесь, нарисуйте картинку, посчитайте отрезки... ![]() Добавлено через 23 минуты Не по теме: echs, если будет не лень, и делать будет нечего, гляньте задачку
1
|
||
|
Вездепух
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,202
|
||
| 16.04.2017, 19:22 | ||
|
Примеры какие-то подтасованные и все равно непонятно, о какой "середине" идет речь. У нас может быть много городов на одном краю диапазона и один единственный город на другом. Пусть у нас есть 900 городов с координатой 0 и один город с координатой 1000. Понятно, что оптимальная точка для столицы при этом будет точкой с координатой 1. И где тут "середина"? Понятно, что в общем случае нас интересует центр масс, а не какая-то "середина". Но в данном случае - в метрике L1. В этой метрике двумерная задача действительно распадается на две одномерные. То есть просто усредняем каждую координату по отдельности и, если место занято, ищем ближайшее свободное место.
0
|
||
|
Модератор
3133 / 2280 / 469
Регистрация: 26.03.2015
Сообщений: 8,874
|
||
| 16.04.2017, 20:39 | ||
|
1
|
||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||||
| 16.04.2017, 20:52 | ||||
|
Все так просто, что даже смешно.
0
|
||||
|
2 / 2 / 1
Регистрация: 04.02.2017
Сообщений: 31
|
|
| 20.04.2017, 18:42 [ТС] | |
|
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 20.04.2017, 20:14 | ||
|
Добавлено через 1 час 15 минут Друзья! Я должен признаться, что по этой задаче у меня есть некоторая фора перед вами. Дело в том, что когда я был еще в щенячьем возрасте и озаботился трудоустройством, в одном из знакомых институтов возникла подобная задача. Что-то типа размещения главного телефонного узла в здании больницы (Вай-Фая тогда еще не было). И зная меня, как подающего надежды программиста (а я, конечно, обещал все сделать в лучшем виде, и кой-какие соображения насчет переборов у меня были), пригласили в это НИИ, даже не взирая на некоторые отягчающие обстоятельства типа 5-го пункта. И вот, ожидая приема в отделе кадров, я что-то чиркал на листочке, искал оптимальности, дошел чуть ли но "ветвей и границ". И вдруг - все увидел! Кадровичка была смущена моим безумным глазом. "вот, еще одного психа принесло в наш дружный коллектив!". Но все обошлося. Мне б, дураку, сделать надменный вид, мол пишу очень сложную программу... А я с места в карьер все начальничкам и рассказал. Типа, задачка-то - школьная. стройте вашу станцию в этом квадрате (кубе) и показал как эта вся "оптимизация" получается. И как бы оказался не у дел. Но ничего, опять обошлось. Подвалили потихонечку другие задачки... Не подвел я коллектив
0
|
||
|
Модератор
3133 / 2280 / 469
Регистрация: 26.03.2015
Сообщений: 8,874
|
|
| 20.04.2017, 23:02 | |
|
Суть этой задачи не в нахождении идеального места для столицы, а в нахождении наилучшего свободного места.
Мы считываем координаты всех городов в некоторую структуру данных, одновременно вычисляя "идеальный квадрат" (любая или обе стороны квадрата могут быть вырождены). Если идеальные места заняты, то нам нужно быстро отвечать на вопросы типа "сколько городов на данной горизонтали/вертикали" и "есть ли город в данной точке".
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 20.04.2017, 23:25 | ||
|
Тут важно понять простую вещь. Что разность городов на восток и запад, а также на север - юг от столицы должна быть минимальна. Не расстояний - они образуются сами, а именно количества городов. Или количества жителей, если император заботится о социальной справедливости.
0
|
||
|
Модератор
3133 / 2280 / 469
Регистрация: 26.03.2015
Сообщений: 8,874
|
|
| 21.04.2017, 00:06 | |
|
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||||
| 21.04.2017, 11:40 | ||||
) не надо.И вообще-то, я предупредил
0
|
||||
| 21.04.2017, 11:40 | |
|
Помогаю со студенческими работами здесь
15
Записи. Данные о государстве: название, площадь, население, столица Столица страны и страна. Вывод столицы по введенной стране
Столица государства, как город с экстраординарным государственным режимом государственной и муниципальной службы Написать программу, в которой при выборе какой то страны мира выводятся ее денежная единица и столица Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|