1. Структура декартового дерева по неявному ключу ...
創建於:2025年12月24日
使用 GPT-5.2 Thinking 回答 Chat01
創建於:2025年12月24日
使用 GPT-5.2 Thinking 回答 Chat01
Структура декартового дерева по неявному ключу однозначно задаётся различными приоритетами вершин
— Если приоритеты различны, структура декартова дерева (treap) по неявному ключу (когда ключи — это индексы в массиве) однозначно определяется приоритетами (так же, как в обычном декартовом дереве по ключу+приоритету). Верно.
При выполнении операции split может быть сделано любое из восьми подключений трех типов поворотов
— При split в декартовом дереве мы спускаемся по дереву, разрывая его, повороты как при обычном merge не делаются в split.
Фраза про "восемь подключений трех типов поворотов" выглядит сомнительно, скорее всего, неверно.
Чем больше потенциал (подходящий для доказательства амортизированного времени работы) структуры, тем скорее следует ожидать операцию с небольшим истинным временем работы
— Потенциал в амортизационном анализе — это мера "накопленных изменений", которые могут вызвать дорогую операцию позже. Большой потенциал означает, что скоро может случиться дорогая операция (которая уменьшит потенциал), а не наоборот.
Утверждение говорит обратное ("больше потенциал → скорее ожидать небольшую операцию") — это неверно в общем случае.
Для двух декартовых деревьев поиска можно объединить за время O(log n), если все ключи в левом меньше всех ключей в правом
— Да, в декартовом дереве merge выполняется за O(log n) при условии, что все ключи в одном дереве меньше ключей в другом (свойство дерева поиска сохраняется). Верно.
Полное двоичное дерево является AVL-деревом
— Полное двоичное дерево (все уровни, кроме, возможно, последнего, заполнены, а последний заполнен слева направо) сбалансировано по высоте, разница высот поддеревьев ≤ 1, поэтому оно является AVL-деревом. Верно.
В декартовом дереве амортизированное время работы каждой операции равно O(log n)
— В декартовом дереве со случайными приоритетами ожидаемое время O(log n), а амортизированное в худшем случае O(log n) для merge/split (это из литературы). Но в общем случае без рандомизации может быть O(n).
Стандартные учебные курсы принимают это за O(log n) в среднем/амортизированно. В контексте теста, вероятно, считается верным.
К нулевому дереву отрезков на сумму применили q операций изменения на отрезке; после этого только O(q log n) отрезков будут ненужными
— В дереве отрезков с отложенными операциями после q операций изменения, в памяти лежит O(q log n) "отложенных заданий" в узлах, которые можно удалить (ненужными). Это стандартный факт. Верно.
Сравнивать строки по паре из длины до
10
8
10
8
и хеша с
10
9
10
9
значениями более надёжно, чем только по хешу с
10
16
10
16
значениями
— Хеш с
10
16
10
16
различных значений даёт вероятность коллизии около
1
/
10
16
1/10
16
. Два хеша с
10
9
10
9
значений каждый — вероятность порядка
1
/
10
9
1/10
9
при сравнении пары, что больше. Поэтому менее надёжно.
Утверждение говорит "более надёжно" — неверно.
Существует такое d, что никакая строка длины > d из символов ‘a’-‘z’ не может иметь суффиксный массив [0,1,2,…,n – 1]
— Суффиксный массив [0,1,...,n-1] означает, что суффиксы отсортированы в лексикографическом порядке как в исходной строке.
Это бывает, например, в строках вида "aaaa..." или лексикографически возрастающих: "abcde...".
Для алфавита 'a'-'z' можно построить возрастающую строку любой длины (пока хватает букв — 26 символов).
Длина больше 26 невозможна для строго возрастающей строки, так как букв 26.
Но можно повторять буквы в конце так, чтобы порядок сохранялся? Проверим:
Суффиксный массив [0..n-1] означает, что для всех i суффикс i лексикографически меньше суффикса i+1.
Это возможно, например, в строках, где каждый символ меньше следующего, либо когда строка состоит из одной буквы.
На самом деле, строка из одной буквы тоже даёт такой порядок. Но для разных букв в начале можно строить долго?
Известный факт: существует максимальная длина такой строки для конечного алфавита (не более размера алфавита в случае строгого возрастания, но если буквы повторяются, можно длиннее? Например, "aaaaa" — суффиксный массив [0..n-1], длина любая).
То есть строка из одной буквы имеет такой суффиксный массив для любой длины.
Значит, d не существует — неверно.
В этом задании ровно 5 правильных ответов
Какие пункты являются верными?
pythondef is_avl_complete(n): # build as implicit array of n nodes (indices 0..n-1) from functools import lru_cache @lru_cache(None) def height(i): if i>=n: return -1 return 1+max(height(2*i+1), height(2*i+2)) for i in range(n): hl=height(2*i+1) if 2*i+1<n else -1 hr=height(2*i+2) if 2*i+2<n else -1 if abs(hl-hr)>1: return False,i,hl,hr return True,None,None,None bad=[] for n in range(1,200): ok,info,hl,hr=is_avl_complete(n) if not ok: bad.append((n,info,hl,hr)) break bad[:5], len(bad) ([], 0)
Верными (в обычных формулировках курса) получаются пункты 1, 4, 5, 7, 10.
Коротко по спорным местам:
"aaaaab"). Тогда суффиксы идут строго по индексам , и суффиксный массив действительно .Остальные (2, 3, 6, 8, 9) — неверные.