Похоже, что задачу можно легко формализовать в терминах целочисленного (а точнее даже булева) программирования, если ввести (как обычно в подобных задачах) булевы переменные
![$x_{ij}=0$ $x_{ij}=0$](https://dxdy-01.korotkov.co.uk/f/8/4/9/849cd339841481b295e57476f650634f82.png)
или
![$1$ $1$](https://dxdy-01.korotkov.co.uk/f/0/3/4/034d0a6be0424bffe9a6e7ac9236c0f582.png)
в зависимости от присутствия человека номер
![$i$ $i$](https://dxdy-04.korotkov.co.uk/f/7/7/a/77a3b857d53fb44e33b53e4c8b68351a82.png)
на вахте номер
![$j$ $j$](https://dxdy-04.korotkov.co.uk/f/3/6/b/36b5afebdba34564d884d347484ac0c782.png)
(под "вахтой" я понимаю пару: объект и период времени).
Тогда постоянное присутствие кого-то на определенном объекте в определенный период будет задаваться требованием неравенства нулю суммы
![$x_{ij}$ $x_{ij}$](https://dxdy-03.korotkov.co.uk/f/6/4/f/64f56542d8c96b6573f52b8e6135215f82.png)
по всем
![$i$ $i$](https://dxdy-04.korotkov.co.uk/f/7/7/a/77a3b857d53fb44e33b53e4c8b68351a82.png)
для каждого фиксированного
![$j$ $j$](https://dxdy-04.korotkov.co.uk/f/3/6/b/36b5afebdba34564d884d347484ac0c782.png)
. Впрочем и достаточность мест в общаге будет задаваться похожим условием, разве что вместо
![$x_{ij}$ $x_{ij}$](https://dxdy-03.korotkov.co.uk/f/6/4/f/64f56542d8c96b6573f52b8e6135215f82.png)
возможно надо будет суммировать
![$(1-x_{ij})$ $(1-x_{ij})$](https://dxdy-02.korotkov.co.uk/f/1/a/3/1a3f36d3dfb17edabe203b1ddf19568c82.png)
и т.д. и т.п.
Ну а про приближенное (или даже точное) решение задач целочисленного программирования все (или почти все) известно. Можно, например, использоваться релаксацию исходной задачи до задачи линейного программирования и т.д.