状压dp
鲜果维他命
Don't be a programmer,to be a problem solver
展开
-
P2167 [SDOI2009]Bill的挑战------状压dp+枚举
题目链接:https://www.luogu.com.cn/problem/P2167分析:这道题用的状压dp思路确实不好想,也有人用容斥原理(数学的方法)做出来的不过我是没看懂,太弱了,dp的思路就是我们从第一位开始枚举每一个字母,然后把不匹配的字符串从字符串集状态中删除,枚举完最后一位为止最后得到答案,复杂度50×2152^{15}215×50×26,算了一下大约2292^{29}229左右,很卡时间,设dp[i][s]表示枚举到第i为合法的字符集状态s有多少种AC代码:#include<原创 2021-05-05 16:03:06 · 143 阅读 · 0 评论 -
P3092 [USACO13NOV]No Change G---经典状压dp+二分
题目链接:https://www.luogu.com.cn/problem/P3092题目大意:约翰到商场购物,他的钱包里有K(1 <= K <= 16)个硬币,面值的范围是1…100,000,000。约翰想按顺序买 N个物品(1 <= N <= 100,000),第i个物品需要花费c(i)块钱,(1 <= c(i) <= 10,000)。在依次进行的购买N个物品的过程中,约翰可以随时停下来付款,每次付款只用一个硬币,支付购买的内容是从上一次支付后开始到现在的这原创 2021-05-04 19:09:48 · 174 阅读 · 0 评论 -
P2704 [NOI2001] 炮兵阵地----状压dp+滚动数组
题目链接https://www.luogu.com.cn/problem/P2704题目大意易懂我就不解释了,直接上分析分析:我们看图可以知道,大炮所在位置只对上下左右相邻的两个位置有影响,所以我们考虑直接从上到下枚举,这样就不用考虑下面的情况,只需要考虑上左右相邻两个位置是否冲突,我们设dp数组为dp[pre][now][i],表示当前考虑到了第i行并且状态为now,上一行的状态为pre的最优炮兵数,那么状态转移方程就是dp[pre][now][i] = max(dp[pre][now][i],d原创 2021-04-29 18:23:42 · 125 阅读 · 0 评论 -
互不侵犯----状压dp入门经典题目
题目链接:https://www.luogu.com.cn/problem/P1896展开题目描述在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。注:数据有加强(2018/4/25)分析:这道题是一个很经典的状压dp,首先我们想一下暴力解法,就是去枚举每一行的所有情况,然后再暴力去判断这种情况是否合法,当然如果暴力枚举我们可以剪枝来缩短时间,但是仍然很慢,所以我们用二进制来储存状态,使用二进制原创 2021-04-29 15:53:42 · 212 阅读 · 0 评论