Блог пользователя neosnova

Автор neosnova, история, 3 года назад, По-русски

Вам дан массив из N<=10^5 целых чисел в интервале [1,K]. K<=50. Вы должны обработать M<=10^5 запросов 2-х видов :

1 i x — изменить значение i-го числа на x

2 — вывести длину кратчайшего непрерывного подотрезка массива, содержащего все целые числа от 1 до K

...

Тест 1
Тест2

P. S. Буду рад услышать любой совет и подсказку. Заранее спасибо.

P.P.S Решил, всем спасибо. Сдал решением alexsushin. Даже не понадобились 2 указателя : я поддерживал минимальное подходящее r (то есть сначала просто r присваивал максимуму из t[v * 2 + 1].pref[i] для всех i которых вообще нет в левой части, а потом проходился по отсортированному вектору t[v * 2].suff и "удалял" этот элемент, тогда левая граница нового отрезка — следующий элемент в векторе, и так как я удаляю последнее вхождение элемента на левом подотрезке, то надо пересчитать r = max(r, t[v * 2 +1].pref['элемент который удалил']). Суть в принципе та же, но не нужен дополнительный массив cnt и двигать указатели, а просто пересчет r.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +8
  • Проголосовать: не нравится

Автор neosnova, история, 3 года назад, По-русски

Привет, Codeforces!

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

Дана квадратная таблица размером n на n (n<=1000). Каждая ячейка таблицы либо черная, либо белая. Надо посчитать количество способов выбрать 2 непересекающихся черных прямоугольника. Под черным прямоугольником понимается любая подтаблица (в форме прямоугольника или квадрата) данной матрицы содержащая более 1 клетки и заполненная только черными клетками.

Буду очень благодарен за любую подсказку.

Тест 1
Тест 2
Тест 3

P.S Во всех тестах C — черная клетка, B — белая.

Полный текст и комментарии »

  • Проголосовать: нравится
  • -4
  • Проголосовать: не нравится

Автор neosnova, история, 4 года назад, По-русски

Привет, Codeforces!

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

Дан неориентированный граф, состоящий из n вершин и m ребер. Так же имеется k запросов 2-x типов :

Для запроса 1-го типа имеется два числа x и y. Надо удалить ребро между вершинами x и y (если оно есть).

Для запроса 2-го типа так же имеется два числа x и y. Надо проверить лежат ли вершины x и y в одной компоненте связности.

N <= 50000, M <= 100000, K <= 150000

Тема этой задачи — СНМ. Но я пока что все равно не понимаю как можно решать эту задачу через СНМ если у нас граф может быть любым.

Буду очень благодарен за любую подсказку.

UPD: Решил. Всем спасибо).

Полный текст и комментарии »

  • Проголосовать: нравится
  • +4
  • Проголосовать: не нравится