状压DP
[cqoi2012]局部极小值
首先我们想到一个 \(DP\) , \(dp[i][S]\) 表示当前填了 \(1 \sim i\) 的数字 ,\(S\) 集合的局部最小值已被确定的方案数
但是这样我们随便填,则会是一些不能是局部最小值变成局部最小值,所以我们考虑容斥
我们发现对于一个矩阵,合法状态数不会太多,所以我们爆搜状态即可
[JSOI2009]密码
这种字符串匹配,我们可以往 \(AC\) 自动机的方面想,字符串种类很小,所以考虑状压
设 \(dp[i][j][S]\) 表示当前填了 \(i\) 的字符,在 \(AC\) 自动机的 \(j\) 号点上,已经有 \(S\) 集合的子串出现过的方案数
[NOI2015]寿司晚宴
我们从部分分考虑,在 \(n\ge20\) 的部分分中,发现质数的数量很少,所以我们状压即可
我们对于 \(n\ge500\) 发现超过最大质因数 \(\ge \sqrt n\)的一类数只能有一个人拿,所以这部分我们特殊考虑
[PKUSC2018]最大前缀和
我们分析一下何为最大前缀和,发现
对于前缀 $ [1 \dots i]$ 若它为最大前缀和,对于 \([1 \dots i]\) 的真后缀一定 $ \ge 0$
其后缀 $[ i+1 \dots n] $ 其前缀一定为 $ < 0$
我们对于这个结构做,分别设 \(f[S],g[S]\) 为 \(S\) 集合内的数组成满足上面的前缀和后缀的方案数
最后统计答案即可
[九省联考 2018] 一双木棋 chess
观察每一步的结构,发现所填的棋子,一定是从上到下数量不上升的,并且仅靠右
我们爆搜状态数,发现状态很少,所以直接暴力转移,将状态情况哈希
博弈论题目建议用 \(dfs\) 写
[联合省选 2021 A | B]滚榜
感觉状态很好设,主要说一下这里涉及到的 $trick $ \(-\) 贡献提前计算
题目要求我们封榜时过题数不降,但我们若再设一维空间就爆了
所以我们考虑在 \(i\) 加上 \(j\) 个过题数时,提前都给后面的人加上 \(j\) 道题,将贡献直接计算
[PKUWC2018]随机算法
首先有一个很显然的 \(dp\) , \(dp[s1][s2]\) 表示当前考虑了集合 \(s1\) 的数 ,当前独立集为 \(s2\) 的方案数
但是这样空间就爆炸了,考虑优化
我们发现独立集这一维是没法去掉的,充分发扬人类智慧
我们记在独立集是 \(S\) 的情况下,考虑可以加的数的集合为 \(L\) 我们发现对于不在 \(L\) 集合中的数
他都不会影响独立集,所以我们将这些数当成相同数,下一个取到 \(L\) 集合中的数,所成的概率就是 $\frac {1}{ 集合大小} $,所以直接转移到下一个更新独立集的状态

浙公网安备 33010602011771号