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

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

点击右上角即可分享
微信分享提示