1

(13 ответов, оставленных в Algo)

brainail пишет:
KADR пишет:
brainail пишет:

Ну тогда если так, то не БФС, а Дейкстра с кучей smile

Почему именно с кучей? Она ведь не всегда работает быстрее smile Если ребер много, то проще уже писать Флойда - будет работать быстрее чем N Дейкстр с кучей и писать намного быстрее.

Конечно согласен! Просто условия не вижу вот и говорю что по ассимптотике лучше smile Но не всегда! tongue
Интересно, а вот фибоначива куча, она ведь за O(1) большинство операций делает, и ведь тогда дейкстра будет работать за O(V + E) :-D Я никогда её не писал, но если кто писал, как она себя ведёт при работе на больших тестах? smile

ээм
но мы же изменяем в куче элементы
а изменение стоит O(logN)

вообще дейкстру с фенвиком проще всего писать

2

(2 ответов, оставленных в Problems)

Имеется строка char *s, нужно написать ф-цию, которая возвращает char *
и которая удаляет символ исходной строки s, стоящий на i-м месте.

#include <cstdio>
#include <cstring>

using namespace std;

int main()
{
    char *s = new char[12];
    gets();
    int i;
    scanf("%d", &i);
    // здесь должен быть вызов ф-ции
    printf("%s", s);
    return 0;
}

3

(13 ответов, оставленных в Algo)

brainail пишет:
chum пишет:

а какая разница взвешенный или нет?
ну самое тупое -- V BFS'ов

Есть разница ... Если у нас граф с рёбрами стоимостью 1, то тут да очередь обычная, а если взвешенный то тут не выгодно писать очередь, она может много раз ложить одну вершину .. Придётся писать V дейкстр с кучей ^^

конечно же нет разницы!

Материал из Википедии — свободной энциклопедии
Диаметр графа — это максимум расстояния между вершинами для всех пар вершин. Расстояние между вершинами — наименьшее число рёбер, которые необходимо пройти, чтобы добраться из одной вершины в другую.

какие дейкстры с флойдами?))
V обходов в глубину / ширину!

4

(13 ответов, оставленных в Algo)

вы бы ограничения дали smile

5

(13 ответов, оставленных в Algo)

а какая разница взвешенный или нет?
ну самое тупое -- V BFS'ов

char s[10];
while (scanf("%s", &s)){
    // do smth
}

7

(23 ответов, оставленных в Problems)

ну строим граф, "конденсируем его" и пускаем bfs из всех вершин.
но это дает ТЛ, поэтому пускаем bfs не из всех, а с каким-нибудь шагом.
можно еще отсортить вершины по кол-ву ребер и идти с середины : )

8

(9 ответов, оставленных в Problems)

ппц)))
все элементы различны!
когда формулируешь задачу, такие "мелочи" надо учитывать, если че.
можно было щас еще вспомнить, что время работы программы неограниченно и память 3тб.

ну вообще, brainail вроде правильно написал решение.

9

(9 ответов, оставленных в Problems)

переберем все длины подпоследовательностей K и для каждой посчитаем ответ деревом отрезков как для k-й порядковой (но только такой, чтобы в ней содержался элемент множ-во А, равный М).

10

(30 ответов, оставленных в Problems)

сколько раз берем рандомную вершину?)

11

(30 ответов, оставленных в Problems)

опять
http://olympiads.ru/zaoch/2009/problems/l.shtml
? sad

12

(4 ответов, оставленных в Problems)

Задача решается нахождение k-й порядковой статистики через дерево отрезков (RSQ).

13

(6 ответов, оставленных в Problems)

ОГРОМНОЕ спасибо!!
помню, приходилось на делфях писать задачки на хэши)

14

(23 ответов, оставленных в Problems)

+1)

15

(6 ответов, оставленных в Problems)

а не можете показать на примере с кодом как работать с char* (т.е. чтение и добавление) ^^ ?

16

(23 ответов, оставленных в Problems)

(я про заливку :-P)

17

(23 ответов, оставленных в Problems)

можно решить не в лоб.
кстати, количество ребер 4 * 10^4

18

(6 ответов, оставленных в Problems)

а что я не так делаю, что у меня не компилится?

#include <stdio.h>
#include <set>

using namespace std;

set < char [10] > s;

int main()
{
    char string[10];
    char c;
    while (scanf("%c", &c)){
        char space;
        scanf("%c", &space);
        gets(string);
        if (c == '?')
            if (s.find(string) != s.end()) printf("YES\n");
            else printf("NO\n");
        else s.insert(string);
    }
    return 0;
}

19

(17 ответов, оставленных в Problems)

Если такую задачу нужно решать на отрезке, который задается "движущимся окном", то нужно написать только k-ю порядковую статистику с деревом отрезков)

20

(6 ответов, оставленных в Problems)

Нужно реализовать структуру данных, поддерживающую множество строк.

Поступает N запросов вида

<команда> <строка>

1 <= N <= 2*10^5

С хранением все ясно -- либо бор, либо хэш таблица.
Однако как быстро считывать строки??

21

(15 ответов, оставленных в Algo)

я могу выложить код на паскале, но только не с кучей, а с деревом отрезков.

22

(10 ответов, оставленных в OlympNews)

я установил CodeProcessor, FileEdit и TZTester.
как дебажить в CodeBlocks или Visual Stdudio?
я открываю <name>.cpp в папке /progs/ , однако компилить он не хочет, не то что дебажить.

23

(6 ответов, оставленных в Problems)

250

спасибо, действительно, плохо читал(
тогда можно мысленно "надуть" многоугольник, получившийся пересечением треугольников и получится как раз равнобедренный прямоугольный треугольник. спасибо! : ))

500

красиво, спасибо, разобрался!

24

(6 ответов, оставленных в Problems)

в 500 я не понял зачем нужна рекурсия, ведь и без нее решения очевидное:

а почему код правильный?)

25

(6 ответов, оставленных в Problems)

насчет 250
а если тест такой :
{0, 6}
{4, 12}

ответ ведь будет неверный!
или я не понимаю условие..