|
0 / 0 / 1
Регистрация: 16.01.2018
Сообщений: 75
|
||||||
Как оптимизировать код24.04.2018, 21:58. Показов 1988. Ответов 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 | |
|
Как можно оптимизировать код? Как можно оптимизировать данный код? Можно как-то оптимизировать этот код?
Как оптимизировать данный код игры крестики нолики? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|