Вопрос. Задание сдал в классе, черновик залил, а отправить забыл… Теперь задание “висит” как не сданное. Что с ним делать?
Да ничего не делать, раз сдали. На практике просто указать на это преподавателю, и всё.
А если так регулярно делать: в процессе работы заливать и обновлять версии черновика, а если что-то в жизни случится, замотаться в других делах и не успеть нажать кнопку “Отправить задание”, то будет ли это критично? Т.е. так делать нежелательно, но баллы будут за это ставится или не будут, или всё равно - нажато ли там чего, лишь бы залито???
Не важно, черновик это, или представлено к оценке – главное, чтобы была возможность выставить оценку.
Если $m_h$ — минимальное число вершин в AVL-дереве высоты $h$. Как показать, что $m_{h+2} = m_{h+1} + m_h + 1$?
Это $h(L) + h® + 1$?
Ну да, это практически очевидно, Вы всё правильно поняли.
Если AVL-дерево имеет высоту $h+2$, то, согласно определению, одно из поддеревьев корня имеет высоту $h+1$, а второе – $h+1$ или $h$. Для того, чтобы исходное дерево имело минимальное число вершин, левое и правое поддеревья корня должны иметь минимальное число вершин, тогда получаем: $$m_{h+2}=1 + m_{h+1} + min{m_{h+1},m_h}$$Осталось только показать, что $m_{h+1} > m_h$, что можно принять как очевидное, а можно и более строго попробовать доказать вспомогательное утверждение, что из AVL-дерева всегда можно удалить лист, и полученное дерево также будет AVL-деревом. Ну, остальное просто, хотя для полноты надо еще проверить верность утверждения для базиса – деревьев высотой 0 и 1, к примеру.
А как тут формулы-то по-человечески вставлять?
Выполнить задание «Частотный словарь» с использованием реализованных выше структур данных и сбалансированных деревьев. В качестве основы для структуры данных «Множество» использовать тот вариант сбалансированного дерева поиска, который был реализован в предыдущем задании.
Что это за задание, и зачем реализовывать множество на основе предыдущего задания (сбалансированные деревья)?
Эта задача обсуждалась на лекции, и представляет собой простейший словарь, где ключ - слово, а значение по ключу - кол-во вхождений слова в текст. Другими словами, нода представляется в виде пары ключ-значение, т.е. D[слово] равно какому-то целочисленному значению - кол-ву вхождений слова в текст.
Надеюсь, словарь не надо делать на основе кучи?
Зря надеетесь. Если эта надежда связана с предположением о том, что преподаватель опять заставляет использовать неэффективные алгоритмы, могу предложить такой вариант: если Вы реализуете это задание по-своему, и докажете эффективность реализации, то получите x2 баллов. Не сможете доказать эффективность или «изобретете велосипед» – x0, причём выбор структуры для реализации ассоциативного массива оптимизацией не является.
Кстати, пояснение по заданию в Moodle обновлено.
Как можно сделать это для обобщенного типа? Можно ли как-то выкрутиться?!?
void print()
{
std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout));
}
template <typename T>
void print()
{
std::copy(a.begin(), a.end(), std::ostream_iterator<T>(std::cout));
}
Вызывать так:
print<имя_типа>();
Для int, например, будет:
print<int>();
Да, @Casey прав, для обобщенного типа – шаблоном. Могу предложить еще один вариант, с перегрузкой оператора вывода в поток:
template <typename T>
ostream & operator<<(ostream & out, const T & a)
{
std::copy(a.begin(), a.end(), std::ostream_iterator<T::value_type>(out," "));
return out;
}
...
std::vector<int> a;
...
std::cout << a;
После определения можете использовать обычный оператор помещения в поток, но у меня такой стиль вызывает опасения – очень уж общий, может вызвать проблемы.
@MB вместо T::value_type
лучше typename std::iteratot_traits<T>::value_type
, тогда ещё и для массивов будет работать и появится возможность для своих типов-контейнеров внешним образом определять, что за тип элемента в контейнере.
Можно уточнить, а на codeforces сколько заданий из 15 надо сделать?
@pletnev_alexander, вообще говоря – минимум по 2 из каждой темы, но желательно это на практике с преподавателем обсудить.
Почему-то я думала, что для итераторов нет обобщенных типов…
Максим Валентинович, а программку курса можно?
Можно: примерная программа курса. Только смысла в ней особого нет – вопросов в том виде, в котором они будут в билетах, программа не содержит, а знать нужно то, что было на лекциях. Поэтому фразы вида «Этого вопроса не было в программе!» не принимаются.