状态压缩DP
Facico
生命是闪耀的此刻,不是过程,就像芳香不需要道路一样。
展开
-
2016年1月24日的比赛总结
2016.1.24的比赛总结Problem One:【Usaco2008 Oct 资格赛】 灌水 Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记。把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库。 建造一个水库需要花费wi(1<=wi<=100000),连接两块土地需要花费Pij(1<=pij原创 2016-01-24 16:50:22 · 775 阅读 · 0 评论 -
JZOJ 4937【GDKOI2017模拟1.12】与运算
DescriptionSolution有一个很显然的性质就是如果一个x的所有二进制位都≥y的所有的二进制位,那么x肯定放在y的前面会比较优。 所有我们设f[i]表示填i时的最大答案。 我们设sum[i]表示二进制包含i到数的个数。 那么f[i]=max(f[i],f[i|er[j−1]]+i∗(sum[i]−sum[i|er[j−1]]))f[i]=max(f[i],f[i|er[j-1]]+原创 2017-01-12 19:30:00 · 785 阅读 · 0 评论 -
【NOIP2014八校联考第2场第2试9.28】帮助Bsny(help)
DescriptionBsny的书架乱成一团了,帮他一下吧! 他的书架上一共有n本书,我们定义混乱值是连续相同高度书本的段数。例如,如果书的高度是30,30,31,31,32,那么混乱值为3;30,32,32,31的混乱值也为3。但是31,32,31,32,31的混乱值为5,这实在是太乱了。 Bsny想尽可能减少混乱值,但他有点累了,所以他决定最多取出k本书,再随意将它们放回到书架上。你能帮助原创 2017-01-14 22:05:36 · 1253 阅读 · 0 评论 -
【NOIP2016提高组复赛】愤怒的小鸟
DescriptionSolution很明显是一个状态压缩DP的题目,不过也可以打成记忆化搜索。 设f[i]表示每个点选或不选的状态投射小鸟的最少方案。 首先预处理一个g[i][j]表示选i和选j,需要的小鸟可以经过小鸟的01状态。 然后直接DP就可以了:f[i|g[j][k]]=min(f[i|g[j][k]],f[i]+1);f[i|g[j][k]]=min(f[i|g[j][k]],f[原创 2016-11-30 17:14:39 · 4168 阅读 · 0 评论 -
【NOIP模拟】数格子
DescriptionSolution一道很经典的题目的简单版。 很显然是状压DP。 首先4*n可以变成n*4,然后状态数就只有16个了。(1表示有凸起,0表示没有凸起) 设f[i][j]表示第i层的状态数为j的时候的方案数。 一开始可以先预处理一个a[i][j]表示状态i是否能转移到状态j。 如果能转移到,那么要具备两个条件: 1、i&j==0,这个很明显,如果两个都填1,那么就说明会原创 2016-09-19 15:00:24 · 946 阅读 · 2 评论 -
【NOIP提高】礼物
Description夏川的生日就要到了。作为夏川形式上的男朋友,季堂打算给夏川买一些生日礼物。 商店里一共有种礼物。夏川每得到一种礼物,就会获得相应喜悦值Wi(每种礼物的喜悦值不能重复获得)。 每次,店员会按照一定的概率Pi(或者不拿出礼物),将第i种礼物拿出来。季堂每次都会将店员拿出来的礼物买下来。 众所周知,白毛切开都是黑的。所以季堂希望最后夏川的喜悦值尽可能地高。 求夏川最后最大的喜原创 2016-08-12 19:22:07 · 1116 阅读 · 0 评论 -
【CF 534F】Game
DescriptionSolutionCF上是输出任意一个方案,这题改成了输出方案数。 其实用一个六维DP很显然的。但很麻烦。 考虑优化一下暴搜。 以为行数最多只有5行,所以可以枚举每列的状态然后再判断行的状态。 所以要先预处理每列要使值为x的所有状态。 然后把得出的一行的状态hash一下,记忆化一下,设f[x][y][z]表示做到第x列,x-1列的状态是y,现在的hash值是z,如果这个原创 2016-08-19 23:13:56 · 1095 阅读 · 0 评论 -
【CQOI2012】局部极小值
DescriptionSolution很明显这题是DP,不过比赛的时候没有考虑状压。 因为有X的点最多只有8个,那么可以考虑状压。 因为要求有X的点比周围的点小,那么可以把数从小到大填。 设f[i][j]表示数值已经填到了第i个数,X点填的状态为j。 转移方程:f[i][j]=∑k∈jf[i−1][j−k]+max(0,rest[j]−i+1)∗f[i−1][j]f[i][j]=\sum_{原创 2016-08-15 22:25:57 · 1444 阅读 · 0 评论 -
【NOIP模拟】锦标赛
Description403机房最近决定举行一场锦标赛。锦标赛共有N个人参加,共进行N-1轮。第一轮随机挑选两名选手进行决斗,胜者进入下一轮的比赛,第二轮到第N-1轮再每轮随机挑选1名选手与上一轮胜利的选手决斗,最后只剩一轮选手。第i名选手与第j名选手决斗,第i名选手胜利的概率是a[i][j]. 作为一号选手的富榄想知道如何安排每轮出场的选手可以使得他获胜的概率最大,并求出这个最大概率。Solut原创 2016-07-18 10:21:42 · 778 阅读 · 0 评论 -
GDKOI总结
GDKOI总结Day 1:Problem 1要维护所有连续子段xor的和,支持修改,很明显是线段树。我开始打了棵维护连续xor的线段树a1和维护a1的线段树a2,由于打的十分暴力,交上去只有30分。用十棵线段树来维护每一位的0和1的个数就能100。比赛是没想到,打只有30分的方法浪费了很多时间。Problem 2这道题用全排列暴力只有20分。原创 2016-02-23 18:54:11 · 1274 阅读 · 0 评论 -
【NOI2014模拟7.11】【WC2008游览计划加强】挖宝藏
DescriptionSolution可以发现,直接做spfa会比较难做。 我们考虑把一层一层的做。 首先有一个很显然的结论:一层的挖过得洞一定是一棵树。 单层的话,很容易想到状压DP。 肯定要DP每层的每个节点覆盖宝藏的情况且当前这个节点被挖过。 那么我们设g[i,j,s]表示点的坐标为(i,j)覆盖宝藏的情况为s。 为了合并s,我们肯定要先枚举s。 然后g[i,j,s原创 2017-03-19 11:52:03 · 806 阅读 · 0 评论