Почему битовые маски используются поверх битовых наборов?

На многих конкурентных сайтах и ​​книгах по программированию я видел вопросы и решения, в которых использовалась битовая маскировка, например, во многих задачах динамического программирования и полного поиска. Я подумал, что они предпочтительнее массивов bools, потому что они более легкие, так как занимают всего 1 бит на значение по сравнению с 1 байтом на значение в массиве bools.

Однако когда я узнал о битовых наборах, я удивился, почему битовые маски используются в качестве битовых наборов, которые также занимают такой же объем памяти, то есть 1 бит на значение. Но у них есть дополнительное преимущество, заключающееся в том, что ими проще пользоваться и ими управлять. И теперь я запутался в этом.

Так что TL; DR, почему битовые маски предпочтительнее битовых наборов, особенно в контексте конкурентного программирования? Чтобы дать представление, вот вопрос, который требует динамического программирования и битовой маскировки, и имеет несколько сложное (по крайней мере для меня на моем уровне, я только 10-й класс) решение, которое я видел в редакционной статье. https://www.hackerrank.com/challenges/synchronous-shopping

Спасибо, что ответили на мои вопросы заранее!

Изменить: Что касается ненавистных комментариев о конкурентном программировании, если вы считаете, что использование битовых масок является неправильной практикой, попробуйте преобразовать код в редакционной статье по ссылке выше, чтобы использовать битовые наборы и получить вердикт AC.

0 ответов

Другие вопросы по тегам