状压dp
文章平均质量分 50
FuTaimeng
好像有人说我冰雪聪明~~~
展开
-
BZOJ4565: [Haoi2016]字符合并
BZOJ4565: [Haoi2016]字符合并区间Dp·状压Dp题解:又一道神题,蒟蒻orz由于合并的获利为正,所以一定会合并到不能合并为止。我们发现一个长度lenlen合并完的长度是已知的,length[i]=(i<m?i:length[i−m+1])length[i]=(i<m?i:length[i-m+1])设f[i][j][s]f[i][j][s]表示区间[i,j][i,j]最后变成ss的原创 2017-08-24 22:04:50 · 411 阅读 · 0 评论 -
BZOJ4145: [AMPPZ2014]The Prices
BZOJ4145: [AMPPZ2014]The Prices状压Dp题解: http://www.cnblogs.com/gromah/p/4592207.html 我们考虑设立状态Dp[i][s]Dp[i][s]表示考虑了前ii个商店后,购买状态为ss的最小花费。转移的话就枚举每个商店ii,首先令: Dp[i][s]=Dp[i−1][s]+D[i]Dp[i][s]=Dp[i−1][s]+D原创 2017-08-21 22:28:25 · 299 阅读 · 0 评论 -
花园
花园状压dp + 矩阵 Luogu P1357 题解:注意到M很小,因此可以状压dp。 然后用矩阵优化一下即可。 因为是环形的,所以要做N次幂,然后取首尾相接的。Code:#include <iostream> #include <cstdio> #include <cstring> #define D(x) cout<<#x<<" = "<<x<<" " #define E cout<<原创 2017-07-31 08:54:34 · 224 阅读 · 0 评论 -
BZOJ4416: [Shoi2013]阶乘字符串
BZOJ4416: [Shoi2013]阶乘字符串状压dp题解:据说n>21n>21无解? 据说合法的串最短是O(n2)O(n^2)级别的? 不知道。。。对于n<=21n<=21的情况, 设f[S]f[S]表示原串的最短前缀的结束位置,这个前缀是以S为字符集合的阶乘字符串。 设g[i][x]g[i][x]表示在后缀[i+1,n][i+1,n]中x这个字符第一次出现的位置。枚举S中的字母x,f原创 2017-08-26 15:40:15 · 428 阅读 · 0 评论 -
BZOJ1076: [SCOI2008]奖励关
BZOJ1076: [SCOI2008]奖励关状压Dp题解: http://blog.csdn.net/PoPoQQQ/article/details/43454337 对于这种最优策略的期望DP 我们一般都是从后往前推 枚举每次出现宝物 枚举此时的状态 枚举宝物是哪种 如果当前的宝物可以吃 就在吃与不吃的后继状态中选择最大值加到当前状态上 如果当前的宝物不能吃 只能选择不吃的后继状态加到原创 2017-08-23 13:17:10 · 296 阅读 · 0 评论 -
[USACO13NOV]没有找零No Change
[USACO13NOV]没有找零No Change状压Dp题解:f[S]表示用了集合S里的coin之后做多购买前多少个。 转移的时候枚举一个coin,二分一下。 统计答案的时候,所有f[S]==n的算出钱数来,取个min。Code:#include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #defi原创 2017-10-05 08:37:09 · 477 阅读 · 0 评论