|
0 / 0 / 1
Регистрация: 16.01.2018
Сообщений: 75
|
||||||
Как оптимизировать код24.04.2018, 21:58. Показов 1902. Ответов 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 | |
|
Как можно оптимизировать код? Как можно оптимизировать данный код? Можно как-то оптимизировать этот код?
Как оптимизировать данный код игры крестики нолики? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|