随笔分类 -  思想——状态压缩(状压DP/轮廓线DP/DP套DP)

摘要:XLIV.CF599E Sandy and Nuts 神题。 本题给我一个忠告:无论什么题,都要先看数据范围(废话)。 没看到$n\leq 13$之前以为是道毒瘤题,看到之后……还是毒瘤题。 因为数据范围小,可以状压。 先不考虑LCA和边的限制。设$f[x][U]$表示:在以$x$为根的子树中,选择 阅读全文
posted @ 2021-03-30 16:05 Troverld 阅读(166) 评论(0) 推荐(0)
摘要:XXXVII.[JXOI2012]奇怪的道路 神题。 (为以示区别,题面中的$k$我们称作$p$)。 思路1. 观察到$k$很小,考虑状压。 设$f[i][j][k]$表示: 前$i$个位置的边已经全部连完了,位置$[i-p+1,i]$的状态压起来是$j$,并且连了$k$条边的方案数。 代码: #i 阅读全文
posted @ 2021-03-30 15:51 Troverld 阅读(59) 评论(0) 推荐(0)
摘要:XXXV.[GDOI2014]拯救莫莉斯 因为$nm\leq 50,m\leq n$, 所以$m$最大只会到$7$,可以状压。 考虑设$f[i][j][k]$表示: 在前$i-1$行已经填好的情况下,第$i-1$行状态为$j$,第$i$行状态为$k$的最小代价和最小数量(是个std::pair)。 阅读全文
posted @ 2021-03-30 15:47 Troverld 阅读(60) 评论(0) 推荐(0)
摘要:XXXIV.[SCOI2008]奖励关 $n\leq 15$就是一眼状压。但这题难点不是状压,而是期望。 应该很容易就能想到,设$f[i][j]$表示前$i$次操作后,状态为$j$的期望收益。但这有个问题——我们不知道如果刷到一个负数收益应不应该选,因为我们不知道这个负数收益在后面会带给我们怎样的期 阅读全文
posted @ 2021-03-30 15:45 Troverld 阅读(66) 评论(0) 推荐(0)
摘要:XXXI.[CQOI2018]解锁屏幕 $n\leq 20$一眼状压。 设$f[i][j]$表示:访问状态为$i$,当前在$j$点的方案数。 我们枚举一个$k$,表示下一个要去的地方;要判断$j$能不能转移到$k$,还要枚举$l$,判断$j,k,l$是否共线。判断共线是基础向量,一次点积+一次叉积带 阅读全文
posted @ 2021-03-30 15:38 Troverld 阅读(62) 评论(0) 推荐(0)
摘要:XXIII.[HNOI2010]公交线路 状压+矩乘的好题。 因为每$p$个位置中,每辆车就至少有$1$个位置, 所以我们可以状压一下。 设$f[i][j]$表示: 区间$[i,i+p-1]$内的车站现在的规划情况是$j$的方案数。 显然,必有$j$的第$p$位是$1$,且$j$共有$k$位是$1$ 阅读全文
posted @ 2021-03-30 15:20 Troverld 阅读(56) 评论(0) 推荐(0)
摘要:VII.[SDOI2009]Bill的挑战 第一眼看上去不会做。第二眼发现$n\leq 15$直觉状压。第三眼算算复杂度发现OK,然后就没问题了。 我们设$f[i][j]$表示: 当前DP到了第$i$位, 所有串的匹配成功的状态是$j$, 的方案数。 通过预处理一个状压数组$mat[i][j]$表示 阅读全文
posted @ 2021-03-30 14:55 Troverld 阅读(48) 评论(0) 推荐(0)
摘要:VI.[HAOI2008]玩具取名 状压一下。 我们令$f[i][j]\(为:区间\)[i,j]$的串,能转移到字母的状态(是个 bitmask ) 至于转移吗……劈开拼一起即可。 代码: #include<bits/stdc++.h> using namespace std; int m[4],n 阅读全文
posted @ 2021-03-30 14:53 Troverld 阅读(78) 评论(0) 推荐(0)
摘要:"[HNOI2006]最短母串问题" 好题。 首先建立AC自动机。~~然后就不会了。~~ 观察到$n$很小,是状压的级别。 考虑将自动机中的$fin$变量升级为$state$变量,表示从当前节点出发,能否到达各字符串。 则$ins$时,有 阅读全文
posted @ 2020-04-26 17:36 Troverld 阅读(131) 评论(0) 推荐(0)