не, я это знаю, но кто может придумать решение с использованием дерева отрезков?
и еще, кто может дать ссылки на задачи на дерево отрезков?
51 2010-03-14 18:47:51
Re: закраска прямой (3 ответов, оставленных в Algo)
52 2010-03-14 16:05:14
Тема: закраска прямой (3 ответов, оставленных в Algo)
Закраска прямой
(Время: 1 сек. Память: 16 Мб)
На числовой прямой окрасили N отрезков. Известны координаты левого и правого концов каждого отрезка (Li и Ri). Найти длину окрашенной части числовой прямой.
Входные данные
Входной файл INPUT.TXT в первой строке содержит число N, в следующих N строках - пары Li и Ri. Ограничения: все числа целые, не превышающие 109 по абсолютной величине, 1 <= N <= 15 000.
Выходные данные
В выходной файл OUTPUT.TXT выведите длину окрашенной части прямой.
Пример
input.txt
2
1 3
2 4
output.txt
3
кто может решить эту задачу разными способами? у кого есть идеи?
53 2010-02-11 19:38:35
Тема: Задачи по теории чисел, по-моему (2 ответов, оставленных в Problems)
(1 задача)
Число называется совершенным, если оно равно сумме всех своих делителей, меньших его самого. Требуется найти все совершенные числа от M до N. ограничения M и N могут достигать до 5*10^18
(2 задача)
Какое наименьшее число N можно представить в виде произведения N = A?B ровно K способами? Произведения A?B и B?А считаются одним
способом, все числа натуральные (1?K?50).
54 2010-02-02 14:56:09
Re: MEDIAN (9 ответов, оставленных в Problems)
длина подпоследовательности всегда нечетная
55 2010-02-01 20:52:51
Re: Структура данных (3 ответов, оставленных в Algo)
Brainail, а ты можешь дать реализацию декартового дерева на PASCAL?!
56 2010-02-01 20:20:21
Тема: Структура данных (3 ответов, оставленных в Algo)
Кто знает какая самая легкая структура данных, которая выполняет процедуры sum(left..right), min(left..right), max(left..right), add(x), delete(x), ... Пожалуйста, дайте реализацию, но без использования STL, желательно на PASCAL!!!
А можно делать add(x), delete(x) с помощью дерева отрезков за O(logn)?
57 2010-02-01 20:15:08
Тема: MEDIAN (9 ответов, оставленных в Problems)
дана последовательность из N чисел a1,a2, ..., an и число M
Надо найти количество подпоследовательностей в которых медиана равна числу M
Пояснения:
Подпоследовательность - это a(i),a(i+1), ... a(i+k) (непрерывно идущие подряд числа из массива A(n))
Медиана - это число, которая будет находиться в середине последовательности после ее сортировки. Например, A={5,1,3}, медиана будет равна 3
Ограничения: 1<=N<=100000, 1<=M<=N
Пожалуйста, решите эту задачу!
58 2010-01-28 16:11:06
Тема: Сортировка по углам (5 ответов, оставленных в Problems)
кто знает как сделать сортировку по углам
если дано N точек (x1,y1; x2,y2; ... ; xn,yn) или вообще зачем нужна сортировка по углам
59 2009-11-28 11:32:10
Тема: TopCoder (1 ответов, оставленных в OlympNews)
Кто знает, как сдавать задачи на TopCoder.
Скажем на С++ задачу нахождения суммы двух чисел или одну задачу из Single Match
60 2009-08-31 01:41:43
Тема: Прямоугольник (3 ответов, оставленных в Problems)
Задан целочисленный прямоугольный массив MxN. Необходимо определить прямоугольную область данного массива, сумма элементов которого максимальна. Кто сможет решить задачу за O(MN) или за O(MNMN)
61 2009-07-30 15:23:59
Re: Решето Эратосфена (15 ответов, оставленных в Algo)
Определение проблемы
Для начала, вспомним, что существует так называемоерешето Эратосфена, позволяющее решать нашу задачу за O(N ln ln N):
bool notPrime[MAXN + 1];
int primes[MAXN];
int sieve(int n) {
int primesCount = 0;
int sqrt_n = (int)sqrt((double)n);
for (int i = 2; i <= n; ++i) {
if (!notPrime[i]) {
primes[primesCount++] = i;
if (i <= sqrt_n) {
for (int j = i * i; j <= n; j += i) {
notPrime[j] = true;
}
}
}
}
return primesCount;
}
Почему решето работает не за линейное время? Потому что одно число в нем может вычеркиваться несколько раз (во внутреннем цикле) . Если добиться, чтобы каждое число вычеркивалось не более одного раза, то, очевидно, алгоритм будет линейным.
Решение
Чтобы сделать это, нам понадобится заменить массив
notPrime[]
на массив
int leastPrime[MAXN + 1]
.
leastPrime[x]
будет хранить индекс минимального простого числа в
primes[]
, на которое делится x. Очевидно, что
primes[leastPrime[x]] = x
для простого x. Также, вместо того чтобы вычеркивать числа вида
k * i,
где i - простое, будем вычеркивать числа вида
primes[k] * i
, где i - это любое число, а
primes[k] <= primes[leastPrime[i]]
:
int leastPrime[MAXN + 1];
int primes[MAXN];
int advancedSieve(int n) {
int primesCount = 0;
for (int i = 2; i <= n; ++i) {
if (!leastPrime[i]) {
primes[primesCount++] = i;
leastPrime[i] = primesCount;
}
for (int j = 0; j < leastPrime[i]; ++j) {
int t = primes[j] * i;
if (t <= n) leastPrime[t] = j + 1;
else break;
}
}
return primesCount;
}
Так как любое составное число однозначно представимо в виде
primes[k] * i,
где
primes[k] <= primes[leastPrime[i]],
то каждое из них в цикле во внутреннем цикле будет пройдено ровно один раз. Также ровно один раз в перед внутренним циклом будет обработано каждое простое число. Таким образом, каждое из чисел обрабатывается ровно один раз и, следовательно, получаем линейный алгоритм
62 2009-07-16 13:05:14
Тема: Поиск подстрок в строке (9 ответов, оставленных в Problems)
Надо найти кол-во подстрок в строке (длина строки <= 50000)
Например:
text = 'ababa'
s = 'aba'
Ответом будет 4.
ababa
ababa
ababa
ababa
63 2009-07-14 22:17:58
Тема: Длиннейший путь (3 ответов, оставленных в Problems)
Как можно решить эту задачу?
Дан неориентированный связный граф без циклов. Надо найти в нем самый длинный путь из i в j (вершину).
Мне кажется тут надо использовать, чтобы найти самую глубокую вершину. А как все это обобщить и реализовать пока не знаю!
64 2009-07-08 12:58:20
Re: Triangles (21 ответов, оставленных в Problems)
А точное условии задачи вот такое:
Пример
E.in
3
0 0 0 3 4 0
E.out
1
--------------
E.in
4
0 0 0 1 1 0 0 -2
E.out
2
-------------
Задача E Треугольник
Вам даны координаты N различных точек. Требуется вычислить, сколько различных прямо-
угольных треугольников можно составить из заданных точек, используя их в качестве вершин
треугольников. Треугольники считаются разными, если у них различна хотя бы одна вершина.
Формат входных данных
Первая строка входного файла содержит число N (1 ? N ? 5000). Следующие N строк содержат
по два целых числа - координаты точек. Координаты точек - целые числа, по абсолютному зна-
чению не превосходящие 10000. Числа в строках разделены пробелами.
Формат выходных данных
Выходной файл должен содержать одно целое неотрицательное число - количество прямоуголь-
ных треугольников.
65 2009-07-05 02:40:50
Тема: Triangles (21 ответов, оставленных в Problems)
Вам дано (N<=5000) точек (xi,yi). Надо найти количество правильных треугольников с разными вершинами.
Ограничение по времени 2 секунды
66 2009-07-03 18:22:53
Тема: Алгоритм Дейкстры с помощью кучи (15 ответов, оставленных в Algo)
Можете написать Алгоритм Дейкстры с помощью кучи на языке Pascal