随笔分类 - 动态规划—状态压缩型/状压
摘要:题意 "题目链接" Sol 记$s_i$表示前$i$个数的前缀异或和,我们每次相当于要找一个$j$满足$0 define Pair pair define MP(x, y) make_pair(x, y) define fi first define se second // define int
阅读全文
摘要:题意 "题目链接" Sol 这个题可能是TJOI2018唯一的非模板题了吧。。 考虑LCS的转移方程, $$f[i][j] = max(f[i 1][j], f[i][j 1], f[i 1][j 1] + (A_i = B_j))$$ 也就是说我们如果知道了前一个列向量$f[i 1]$以及$A_i
阅读全文
摘要:题意 "题目链接" Sol $n \leqslant 16$可以想到状压 我们可以预处理出任意两行之间每列的最小值以及相邻两列的最小值 然后枚举一个起点,$f[sta][i]$表示走过了$sta$这个集合内的元素,当前在$i$点的$k$的最大值 转移的时候枚举接下来走哪个位置即可 时间复杂度$n^3
阅读全文
摘要:题意 "题目链接" $N$个物品,每次得到第$i$个物品的概率为$p_i$,而且有可能什么也得不到,问期望多少次能收集到全部$N$个物品 Sol 最直观的做法是直接状压,设$f[sta]$表示已经获得了$sta$这个集合里的所有元素,距离全拿满的期望,推一推式子直接转移就好了 主程序代码: cpp
阅读全文
摘要:题意 "题目链接" Sol 又是一道神仙题??。。 把绝对值拆开之后状压前面的符号?。。 下界显然,但是上界为啥是对的呀qwq。。 cpp include using namespace std; const int MAXN = 1e6 + 10; inline int read() { char
阅读全文
摘要:题意 "题目链接" 给出$n$个数,问任意选几个数,它们$\&$起来等于$0$的方案数 Sol 正解居然是容斥原理Orz,然而本蒟蒻完全想不到。。 考虑每一种方案 答案=任意一种方案 至少有$1$位为$1$的方案 + 至少有两位为$1$的方案 至少有三位为$1$的方案 至少有$i$位为$1$的方案可
阅读全文
摘要:题意 "题目链接" 题目的意思是给一个数组C,长度为n,每个数字的范围是2^m,然后要求构造一个数组a,满足 1、a[i] % C[i] !=0 ; 2、a[i] 3、a[i] & a[i+1] = 0; Sol 直接dp的话就是先枚举补集的子集,这样的复杂度是$3^n$的 然后补集的子集可以用高位
阅读全文
摘要:题意 "题目链接" Sol 这题。。。。我样例没过就A了??。。算了,就当是样例卡精度吧。。 直接状压dp一下,$f[sta]$表示干掉$sta$这个集合里面的鸟的最小操作数 转移的时候判断一下一次能干掉多少鸟。。 cpp include define LL long long using name
阅读全文
摘要:题意 "题目链接" Sol 不愧是dls出的比赛啊,265个交了题的人只有8个有分Orz 做完这题,,感觉自己的位运算dp姿势升华了。。。 首先最裸的dp应该比较好想,设$f[i][j][k]$表示前$i$个数选出来的数异或和为$j$,按位与和为$k$的方案数 转移的时候讨论一下该位置选不选,最后只
阅读全文
摘要:题意 "题目链接" Sol 刚开始的思路是$f[i][j]$表示到第$i$位,LIS长度为$j$的方案。 然而发现根本不能转移,除非知道了之前的状态然后重新dp一遍。。 题解,,,挺暴力的把,直接把求LIS过程中的单调栈当成一个状态压进去了。。 自己真是不长记性,明明已经被这个单调栈坑过一次了。。
阅读全文
摘要:题意 Sol 这好像是我第一次接触三进制状压 首先,每次打完怪之后吃宝石不一定是最优的,因为有模仿怪的存在,可能你吃完宝石和他打就GG了。。 因此我们需要维护的状态有三个 0:没打 1:打了怪物 没吃宝石 2:打了怪物 吃了宝石 如果我们能知道打了那些怪,吃了那些宝石,那么此时的状态时确定的,预处理
阅读全文
摘要:题意 $n$个食物,每个食物有一个满意度,从中选出$m$个,使得满意度最大 同时有$k$个关系:若$x_i$在$y_i$之前吃,则会获得$C_i$的收益 Sol 官方题解是$O(2^n n^2)$的,不过我没发现状态之间的联系,就写了一个$O(2^n n^3)$的,不过还是水过去了。 $f[i][j
阅读全文
摘要:题意 描述不清。。。 Sol 网络流24题里面怎么会有状压dp?? 真是狗血,不过还是简单吧。 直接用$f[sta]$表示当前状态为$sta$时的最小花费 转移的时候枚举一下哪一个补丁可以搞这个状态 但是这玩意儿有后效性,可以用SPFA消去
阅读全文
摘要:题目描述 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示
阅读全文
摘要:Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近
阅读全文
摘要:题目描述 Each of Farmer John's N (4 <= N <= 16) cows has a unique serial number S_i (1 <= S_i <= 25,000). The cows are so proud of it that each one now we
阅读全文
摘要:时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 时间限制: 1
阅读全文