状态dp
weixin_44019404
这个作者很懒,什么都没留下…
展开
-
状压POJ 3254
简单状压题目。 我们可以发现,这一行的情况永远之于上一行有关,第i,j个只与i,j-1和i-1,j有关。 那我们就状压每一行。 先做预处理,可以节约每一次枚举上一行和这一行的状态。为什么呢,因为只有左右不同时为1的时候,才算是合法的输入。 接着是关与空白格子,就开一个数组,记录他是在第i,j这个位置上的,相当于埋一颗雷,值为1,这样就可以和每一行做&运算,要&出来的值为0,才算是合...原创 2019-03-26 12:17:16 · 61 阅读 · 0 评论 -
POJ 2836状压dp
我们可以通过再草稿纸上模拟矩形的枚举方式发现,最优解矩形一定是两个点为对角线的矩形(特殊情况除外),那我们就通过枚举 每两个点来进行状态压缩,把这个两个点所包围的面积中的点压缩再里面,然后通过|表达式,如果最后点集|出来达到了(1<<n),那么就比较最小值。 主要是注意一下这里不能为零矩形的面积。 #include<iostream> #include<cstring...原创 2019-03-27 09:07:39 · 149 阅读 · 0 评论 -
Educational Codeforces Round 6 E. New Year Tree
题意 给出一个有根树,给出m个操作,操作1表示使得这一棵树的某一个节点的所有子树染上某一种颜色,操作2表示查询这个节点及其子树的颜色数量。 思路 对于一颗有根树来说,我们依靠dfs序就可以变换成为一个有序的序列,所以根据dfs序可以建立线段树。 对于线段树的操作,更新的话,区间更新,推lazy标记,问题是怎么去统计颜色的数量,这也关系到我们将怎么去推lazy标记。 如果单纯的修改,变换tree[r...原创 2019-09-22 11:31:10 · 67 阅读 · 0 评论 -
G - Multidimensional Queries 线段树结合状压
题意 给出一个k维度空间,求[l,r]的最大曼哈顿距离。 用二进制枚举绝对值相加可能出现的所有情况。用线段树来维护单点修改,区间查询。 #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<cstdlib> #include<...原创 2019-10-11 20:15:43 · 109 阅读 · 0 评论