Описание проблемы:
Нам дан список (выровненных по оси) прямоугольников. Каждый прямоугольник = [x1, y1, x2, y2], где (x1, y1) — координаты нижнего левого угла, а (x2, y2) — координаты верхнего правого угла i-го прямоугольника. Нам нужно найти общую площадь, занимаемую всеми прямоугольниками на плоскости. Поскольку ответ может быть очень большим, верните его по модулю 10^9 + 7. Примечание: y1 всегда будет 0 .
Формат ввода:
< li>Первая строка содержит целое число N — количество прямоугольников.
Следующие N строк содержат по четыре целых числа: x1, y1, x2, y2.
< /li>
Формат вывода:
Вывести общую площадь покрытия по модулю 10^9 + 7.
Ограничения:
1 end || start > r || end < l) return;
if (start >= l && end 0) ? (end - start + 1) : 0;
if (start != end) {
lazy[2 * node + 1] += lazy[node];
lazy[2 * node + 2] += lazy[node];
}
return;
}
public long query(int l, int r) {
return query(0, 0, size - 1, l, r);
}
private long query(int node, int start, int end, int l, int r) {
if (lazy[node] != 0) {
tree[node] = (lazy[node] > 0) ? (end - start + 1) : 0;
if (start != end) {
lazy[2 * node + 1] += lazy[node];
lazy[2 * node + 2] += lazy[node];
}
lazy[node] = 0;
}
if (start > end || start > r || end < l) return 0;
if (start >= l && end
Мой ленивый логика распространения может быть ошибочной в некоторых случаях.
Производительность неоптимальна для более крупных тестовых случаев.
Выполненные шаги по отладке:
Зарегистрированные сжатые координаты.
Запись отсортированных событий.
Запись расчетов и сегментов промежуточной площади состояние дерева.
Проверено ленивое распространение путем проверки состояний дерева вручную.
Вопрос: Что я делаю неправильно при реализации дерева сегментов? Может ли быть логический недостаток в ленивом распространении или обработке событий? Если да, то как я могу это исправить? Альтернативно, существует ли более эффективный подход к решению этой проблемы?
[b]Описание проблемы:[/b] Нам дан список (выровненных по оси) прямоугольников. Каждый прямоугольник[i] = [x1, y1, x2, y2], где (x1, y1) — координаты нижнего левого угла, а (x2, y2) — координаты верхнего правого угла i-го прямоугольника. Нам нужно найти [b]общую площадь, занимаемую всеми прямоугольниками[/b] на плоскости. Поскольку ответ может быть очень большим, верните его по модулю 10^9 + 7. [b]Примечание:[/b] y1 всегда будет 0 .
[b]Формат ввода:[/b] [list] < li>Первая строка содержит целое число N — количество прямоугольников.
[*]Следующие N строк содержат по четыре целых числа: x1, y1, x2, y2. < /li> [/list] [b]Формат вывода:[/b]
Вывести общую площадь покрытия по модулю 10^9 + 7.
[b]Ограничения:[/b] [list] 1 end || start > r || end < l) return;
if (start >= l && end 0) ? (end - start + 1) : 0; if (start != end) { lazy[2 * node + 1] += lazy[node]; lazy[2 * node + 2] += lazy[node]; } return; }
public long query(int l, int r) { return query(0, 0, size - 1, l, r); }
private long query(int node, int start, int end, int l, int r) { if (lazy[node] != 0) { tree[node] = (lazy[node] > 0) ? (end - start + 1) : 0; if (start != end) { lazy[2 * node + 1] += lazy[node]; lazy[2 * node + 2] += lazy[node]; } lazy[node] = 0; }
if (start > end || start > r || end < l) return 0;
if (start >= l && end
[*]Мой [b]ленивый логика распространения[/b] может быть ошибочной в некоторых случаях.
[*]Производительность неоптимальна для более крупных тестовых случаев.
[/list]
Выполненные шаги по отладке: [list] [*] [b]Зарегистрированные сжатые координаты.[/b]
[*][b]Запись отсортированных событий.[/b]
[*][b]Запись расчетов и сегментов промежуточной площади состояние дерева.[/b]
[*]Проверено [b]ленивое распространение[/b] путем проверки состояний дерева вручную. [/list]
[b]Вопрос:[/b] Что я делаю неправильно при реализации дерева сегментов? Может ли быть логический недостаток в ленивом распространении или обработке событий? Если да, то как я могу это исправить? Альтернативно, существует ли более эффективный подход к решению этой проблемы?
Описание проблемы:
Нам дан список (выровненных по оси) прямоугольников. Каждый прямоугольник = , где (x1, y1) — координаты нижнего левого угла, а (x2, y2) — координаты верхнего правого угла i-го прямоугольника. Нам нужно найти общую площадь,...
Мне нужно получить только общее возможное количество сегментов для агрегирования сегментов.
Я пытаюсь получить количество документов с повторяющимся значением для поля электронной почты. Я использовал следующий совокупный запрос, чтобы получить...
Я выполняю сокращение строк в трехмерном ndarray (KxMxN), т. е. беру все значения столбца и использую функцию уменьшения для получения скалярного значения; в конечном итоге матрица KxMxN станет двумерным массивом ndarray порядка KxN. Подробности...
У меня есть следующий фрагмент кода, который вычисляет расстояние Махаланобиса по набору пакетных функций. На моем устройстве это занимает около 100 мс, большая часть которого связана с матричным умножением между delta и inv_covariance
дельта — это...
У меня есть следующий фрагмент кода, который вычисляет расстояние Махаланобиса по набору пакетных функций. На моем устройстве это занимает около 100 мс, большая часть которого связана с матричным умножением между delta и inv_covariance
дельта — это...