|
0 / 0 / 1
Регистрация: 16.01.2018
Сообщений: 75
|
||||||
Как оптимизировать код24.04.2018, 21:58. Показов 2120. Ответов 27
Метки нет (Все метки)
Доброй ночи господа у меня к вам такая просьба как можно упростить данный код?
0
|
||||||
| 24.04.2018, 21:58 | |
|
Ответы с готовыми решениями:
27
Как оптимизировать код? Как оптимизировать код?
|
|
0 / 0 / 1
Регистрация: 16.01.2018
Сообщений: 75
|
||
| 25.04.2018, 21:54 [ТС] | ||
|
0
|
||
| 25.04.2018, 22:06 | |
|
Еще раз. тебе нужно найти все такие (x, y), такие что (x-x0)^2+(y-y0)^2 <= r^2, (x-x1)^2+(y-y1)^2 <= r^2
либо только равно? Ответ в первом случае - множество точек. Во втором либо ничего, либо одна точка, либо две. Добавь конкретики. Для решения второй задачи хватает знаний школьной геометрии. И способов решений там, однако, много
0
|
|
|
0 / 0 / 1
Регистрация: 16.01.2018
Сообщений: 75
|
||
| 26.04.2018, 08:49 [ТС] | ||
|
0
|
||
| 26.04.2018, 11:41 | ||||||
|
о. Эт хорошая задача
Смотри. Решать можно всяко. Можно устроить что-то вида разбиения на квадраты. Т.е. Давай запустим некую функцию f(x0, y0, x, y) (начальные параметры нужно тоже адекватно выбрать). Что делает наша f. Она смотрит. если все 4 точки квадрата(т.е. (x0, y0), (x0, y), (x, y0), (x, y)) лежат в области пересечения - то все возвращаем площадь квадрата. Если ни одна не принадлежит - возвращаем 0. Иначе разбиваем квадрат на 4 и снова считать в глубь. Чем-то похоже на квадродерево. НО! Это долго или неточно (т.к. одно вытекает из другого) Другой вариант пойти в интегралы По фану (коли могешь) можешь посчитать ручками. А можно сделать очень красиво. Называется вроде интегралы по Симсону (или нет. я не помню) Смысл в чем. Давай посчитаем площадь всей фигуры (т.е. площадь объединения шаров) Для определим функцию f(l, l+eps) eps выбирается как тебе угодно (сколько хочешь точности. я ставил 1e-2) f(l, r) будет считать площадь от l до r Считать будет так.
А делается это снова просто Находишь точки пересечения y=p и окружностей Добавлять 4 точки в массив. Сортируешь его. Ответ - сумма разностей между соседними элементами. Тогда необходимая тебе область будет равно сумме площадей круга - наша насчитанная площадь Ах да. Забыл (на всякий. вдруг это неочевидно) сказать. Что площадь ты также считаешь в цикле. т.е. double sum = 0; for (double l = что-то; l <= что-то; l+=eps) sum+=f(l, l+eps); Конец
0
|
||||||
|
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
|
|||||||
| 26.04.2018, 12:02 | |||||||
0
|
|||||||
| 26.04.2018, 16:41 | |
|
Ах да. Я безбожно наврал.
Считать g(p) нужно по-другому. Для каждой окружности находим точки пересечения. Соль в том, что есть точка входа и точка выхода. Загоняем их в массив. Сортируем. Точка входа +1, выхода -1. Идем по массиву и насчитываем баланс. Если он в какой-то момент становится 1 (при +1), запоминаем вход. Если в какой-то момент становится равен 0 (при -1), прибавляем к ответу вход - данный выход. Конец
0
|
|
| 27.04.2018, 23:28 | |
|
Чет мне очень скучно стало..
Решение с средним не зайдет. Например.. Дан массив {1, 2, 3, 4, 100}. Правильно выбранный элемент - 3. Так что решать так нельзя. Нельзя решать так, как я предлагал. Потому что функция неунимодальная. Наврал я опять. А ты ковано согласился. Не надо так.. А решается все очень и очень просто. Поможет в это ограничение на a[i], b[i], c[i] <= 10^4 Ответ - f(a)+f(b)+f(c) Решаем для одного массива (v) Воруем идею у сортировки подсчетом получаем массив p, где p[i] - количество элементов i в массиве v Рассмотрим некое произвольное число k Все элементы от 0 до k-1 при подсчете нашей суммы будут иметь вид (k-v[i]) Ничего нам не мешает вычислить количество элементов от 0 до k-1 (пусть их cnt) Тогда первая часть суммы cnt*k-sum(0..k-1). Сумма элементов от 0 до k-1 считается частичными суммами Разбираемся с элементами от k+1 до 10^4. Их вид в сумме v[i]-k Их количество тоже можем узнать за O(1) Их сумму можем узнать за O(1) Вторая часть необходимой суммы sum(k+1..10^4)-cnt2*k И так делаем для всех k = 0..10^4 Для каждого считаем за O(1) Итог - 10^4+10^5 - за одну секунду ой как зайдет (ога. проверил. 0.092c 3.891мб)
0
|
|
|
0 / 0 / 1
Регистрация: 16.01.2018
Сообщений: 75
|
||||||
| 09.09.2018, 15:51 [ТС] | ||||||
|
Ромаха, как тебе такое решение
0
|
||||||
| 09.09.2018, 15:51 | |
|
Как можно оптимизировать код? Как можно оптимизировать данный код? Можно как-то оптимизировать этот код?
Как оптимизировать данный код игры крестики нолики? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
BitTorrent (версия 7.11 English) и Меню Настройки
russiannick 15.11.2026
Пункты, отвечающие за отключение обновлений в BitTorrent версии 7. 11 (английской)
Options
Preferences
General
Language
|
Транслитерация текста с кириллицы на латиницу (вариант №4)
Maks 15.11.2026
Что-то я перемудрил с предыдущими версиями, в этот раз сделал всё проще, обратившись к функции "СтрокаЛатиницей" из типового общего модуля "СтроковыеФункцииКлиент".
В данной функции нет апострофов,. . .
|
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы.
Карта этого меню приложена ниже.
Нужный пункт выделен красным.
Сервис
Настройки
Поведение
|
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки.
Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён".
Изменено отображение буквы Й.
Добавлена. . .
|
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|