
状态压缩
Chester_King
虽千万人,吾往矣。
展开
-
【51nod】1674 区间的价值 V2 状态压缩
题目传送门woc……woc……woc……(重要的事情说三遍)这题TMD是一道有概率AC的题目!!!(博主980ms卡常过去的……)首先我们都知道前缀或者后缀的and和or值的变化是log级别的。证明:把每一位的权值转化成二进制,and的值只可能递减,or的值只可能递增。然后我们可以枚举区间的and的值,移动端点,根据每个区间的or值统计答案。p.s.Manchery大佬太强啦,原创 2017-09-06 20:57:08 · 379 阅读 · 2 评论 -
【洛谷】2831 [Noip2016]愤怒的小鸟 状压DP
题目传送门突然感觉NOIP好难啊,要是这题放在考试中我肯定又是不会做的……观察数据范围,n≤18n \leq 18,我们想到了什么?没错,就是状压DP。首先我们已经知道了抛物线的形式y=ax2+bxy=ax^2+bx,那么我们可以O(n2)O(n^2)枚举点对算出抛物线的各项的系数,然后在判断一下哪些点在这条抛物线上。之后枚举状压的状态,选择从小到大的第一个不在状态里的点,然后枚举抛物线,直接进行状原创 2017-10-20 20:43:45 · 303 阅读 · 0 评论 -
【51nod】1779 逆序对统计 状压DP
题目传送门这题好迷啊,一直都看不懂题目意思……(就不能TMD说的清楚点吗?)题目大意:有nn个位置和mm道题目,第ii道题目的权值为ii,可以放在第a[i]a[i]位上,求最大逆序对数。看到数据范围里n≤20n \leq 20,瞬间想到了状压,果真如此。定义f[j]f[j]表示当前状态为j的最大逆序对。我们顺序读入mm道题目,显然权值单调递增,即每道题目能和所有在它之前、放在它之后的题目形成逆序对。原创 2017-10-15 21:33:19 · 416 阅读 · 0 评论 -
【BZOJ】1087 [SCOI2005]互不侵犯King 状压DP(轮廓线DP)
题目传送门看到这么小的数据范围,立马就想到了状压DP。p.s.如果看到数据范围小于20,首先考虑状压DP;小于50,首先考虑折半搜索。——佳龙大佬考虑每一行的国王放置,只和上一行的国王放置情况有关,于是我们可以枚举这两行的国王放置情况。然后我们考虑DP状态的设置,定义f[i][j][now]表示当前放到第i行,已经放了j个国王,当前行的国王放置情况为now的方案数。状态转移方程原创 2017-08-17 20:45:31 · 314 阅读 · 0 评论 -
【BZOJ】2679 [Usaco2012 Open]Balanced Cow Subsets 折半搜索+状压
题目传送门第一眼看到这题,以为可以直接大力搜索,T了一发以后发现时间复杂度为O(320)O(3^{20}),于是就想折半搜索。然而直接折半搜索WA了一发以后我停下了盲目的敲代码,仔细思考了题目。造了一组数据:“6 88 36 36 7 95 24”,发现{88,36,7}与{36,95}有两种组合情况,但是答案只会被加一次。于是想到状压,判断两个相等的集合内取了哪些数,开个bool数组去一下重即可。原创 2017-10-27 20:09:30 · 481 阅读 · 0 评论