Рубрика «олимпиадные задачи» - 2

Мы разрабатываем проект CRIU (Checkpoint/Restore in Userspace) и у нас возникла достаточно интересная задача о том, как восстановить оригинальное дерево процессов. Я предлагаю вам попытаться решить ее.

Задача

CRIU — это утилита, которая позволяет сохранить состояние процессов на диск и постановить их позднее на этой или на любой другой машине. Одной из подзадач восстановления является нахождение последовательности действий для того, чтобы восстановить дерево процессов. Входные данные содержат набор параметров для каждого процесса: уникальный идентификатор (PID), ссылку на родителя (PPID), идентификатор сессии (SID).

image
Читать полностью »

Вступление

Привет, Хабровчане.
Весной обычно проводится целая куча олимпиад. Программирование не исключение. Защищать честь моего учебного заведения (я учусь в техникуме, опыта мало, поэтому простите мой нубокод) доверили мне и моему одногруппнику.
У нас правила проведения такие: за месяц до олимпиады выдаются 10 заданий, а перед олимпиадой будет рандомно выбрано одно задание и роздано участникам. Я живу на Юге Украины, а Украина – страна специфическая, даже в программировании. При выполнении задания нужно написать программу на языке Delphi/C++/C# (один из них), сделать приятный и удобный интерфейс (красиво, информативно, обязательно должна присутствовать автоочистка, переход к следующему текстовому полю при нажатии на Enter и т.д.), переписать код программы на листик и нарисовать блок-схему (!) к программе. Да-да, блок схему к ООП программе.
Ладно, суть данного поста не в описании системы образовании в Украине. Я хочу привести код своих программ, являющихся решением заданий. Для чего я это делаю? Мне с одногруппником пришлось очень много перерыть в нете, поспрашивать на форумах и мучать знакомых ПРОграммистов, чтобы решить некоторые задания, так как ответа на поверхности интернета нет.
Читать полностью »

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

Введение

Начнем с определения. Пусть у нас есть строка s0..n-1. Полиномиальным хешем этой строки называется число h = hash(s0..n-1) = s0 + ps1 + p2s2 +… + pn-1sn-1, где p — некоторое натуральное число (позже будет сказано, какое именно), а si — код i-ого символа строки s (почти во всех современных языках он записывается s[i]).

Хеши обладают тем свойством, что у одинаковых строк хеши обязательно равны. Поэтому основная операция, которую позволяют выполнять хеши — быстрое сравнение двух подстрок на равенство. Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js