状压dp
「CF543C」Remembering Strings-状态压缩dp
· ✏️ 658 words · ☕ 2 mins read

给定 $n$ 个长度均为 $m$ 的字符串,再给出一个 $n$ 行 $m$ 列的矩阵 ${a _ {nm}}$。
矩阵元素 $a _ {ij}$ 代表把第 $i$ 个字符串第 $j$ 个字符改成其它任意字符所需要的代价。

现在要求对于任意一个字符串,总存在某一位置 $j$ 使得该位置上的字符在任意其他字符串该位置的字符不同。

即为对于第 x 个字符串 ,有 $\exists j \in [1,m] , \forall i \in [1,n],s _ {xj} \neq s _ {ij}$ 。

求把所有字符串修改成满足上述要求的字符串的最小代价是多少?

数据范围: $1 \le n,m \le 20,1\le a _ {ij} \le 10^6$ 。


「TJOI2015」棋盘-状压dp+矩阵快速幂
· ✏️ 902 words · ☕ 2 mins read

有一个 $n$ 行 $m$ 列的棋盘,棋盘上可以放很多特殊的棋子,每个棋子的攻击范围是 $3$ 行 $p$ 列。输入数据用一个 $3 \times p$ 的矩阵给出了棋子攻击范围的模板,棋子被默认在模板中的第 [二] 行,第 [$k+1$] 列,模板中棋子能攻击到的位置标记为 1,不能攻击到的位置是 0 $(1 \leq p \leq m, 0 \leq k < p)$。输入数据保证模板中的第 [二] 行第 [$k+1$] 列是 1

打开门的密码是这样的:在要求棋子互相不能攻击到的前提下,摆放棋子的方案数。注意什么棋子都不摆也算作一种可行方案。请求出方案对 $2^{32}$ 取余的结果即可。


「SCOI2007」排列-状压dp
· ✏️ 371 words · ☕ 1 mins read

给一个数字串 $s$ 和正整数 $d$ , 统计 $s$ 有多少种不同的排列能被 $d$ 整除(可以有前导 $0$ )。


「NOI2015」寿司晚宴-状压dp
· ✏️ 1428 words · ☕ 3 mins read

为了庆祝 $NOI$ 的成功开幕,主办方为大家准备了一场寿司晚宴。小 $G$ 和小 $W$ 作为参加 $NOI$ 的选手,也被邀请参加了寿司晚宴。

在晚宴上,主办方为大家提供了 $n−1$ 种不同的寿司,编号 $1,2,3,⋯,n-1$ ,其中第种寿司的美味度为 $i+1$(即寿司的美味度为从 $2$ 到 $n$ )。

现在小 $G$ 和小 $W$ 希望每人选一些寿司种类来品尝,他们规定一种品尝方案为不和谐的当且仅当:小 $G$ 品尝的寿司种类中存在一种美味度为 $x$ 的寿司,小 $W$ 品尝的寿司中存在一种美味度为 $y$ 的寿司,而 $x$ 与 $y$ 不互质。

现在小 $G$ 和小 $W$ 希望统计一共有多少种和谐的品尝寿司的方案(对给定的正整数 $p$ 取模)。注意一个人可以不吃任何寿司。