题意要求构造一个长度为 $n(\le 10^{15})$ 的 $0/1$ 环形序列,满足任意连续 $m(2\le m \le 5)$ 个数的和不超过 $k$ 。求方案数。题解$m$ 比较小,可以状压。可以发现答案其实就是把一个状态往后推 $n$ 次,最后回到自己的方案数。两个状态之间的转移关系 $s[i][j]$ 可以提前预处理出来,然后把 $s$ 看成一个矩阵,合法状态 $i$ 对答案的贡...
双倍经验:SP1110题意填一个 $16\times 16$ 的数独。多组数据。题解状压优化搜索+剪枝。用 $16$ 位二进制数 $\text{ok}[i][j]$ 表示每个点可以填字母的情况。每次搜索之前先尽可能找到不合法,或只有一种填法的情况。某个点不能填任何字母则回溯;只能填一个字母则直接向下搜索,搜不到直接退出。某个字母不能填在某一行的任何位置则回溯;只能填在一个位置则向下搜索。列同...
题意给出一个 $5\times 5$ 的 $0/1$ 矩阵,每次点击某一个点会改变自身及上下左右的状态。求把矩阵全部变为 $1$ 的最少步数。多组数据,组数 $N\le 500$ 。题解考虑逐行递推,如果上一行 $(i,j)$ 是 $0$ ,那么就需要点击当前行的 $(i+1,j)$ 。最后校验最后一行是否全为 $1$ 即可。但第 $1$ 行没有上一行,所以我们需要枚举第 $0$ 行的状态,...
题意有一个 $N\times M$ 的长方形迷宫,相邻两个单元之间可能有不能通过的墙或可以用第 $Q_i$ 种钥匙打开的门,有的单元中有第 $Q_i$ 种钥匙。从 $(1,1)$ 出发,目标是 $(N,M)$,每次只能移动一个单元,求最短移动时间。其中 $N,M\le 10$ ,钥匙的种类数 $P\le 10$ 。题解钥匙的种类数不多,考虑直接状压搜索。用 $s[x][y][i]$ 表示 $...