状态转移
文章平均质量分 65
SC.ldxcaicai
我很菜=_=
展开
-
2018.07.22 codeforces750E(线段树维护状态转移)
传送门 给出一个数字字串,给出若干个询问,询问在字串的一段区间保证出现201720172017而不出现201620162016需要删去的最少字符。 下面定义5个状态。 状态0:连2都没有 状态1:只有2,没有0连在后面 状态2:出现20,没有1连在后面 状态3:出现201,没有7连在后面 状态4:出现2017 这样每次询问时,用f[i][j]f[i][j]f[i][j]表示从状态i...原创 2018-07-22 13:17:35 · 785 阅读 · 0 评论 -
2018.07.22 洛谷P2986 伟大的奶牛聚集(树形dp)
传送门 给出一棵树,树有边权和点权,若选定一个点作为中心,这棵树的代价是所有点权乘上到根的距离的和。求代价最小。解法:一道明显的换根dpdpdp,如果枚举根的话时间复杂度O(n2)O(n2)O(n^2)直接上天。看来只能通过某些方法来优化时间复杂度啊。我们知道求出以111为根的代价是可以O(n)O(n)O(n)递推的。然后这样能否推出111的儿子的代价呢?显然是可以的,对于以vvv为根的...原创 2018-07-22 22:16:13 · 160 阅读 · 0 评论 -
2018.07.22 洛谷P3047附近的牛(树形dp)
传送门 给出一棵nnn个点的树,每个点上有CiCiC_i头牛,问每个点kkk步范围内各有多少头牛。 刚看完题惊了这东西不可做啊。 然后就开始想换根dpdpdp,结果没杠出来。 继续读题发现kkk很小啊,才202020,那这怕不是可以跑一个O(nk)O(nk)O(nk)的算法哦。 然后发现确实可以O(nk)O(nk)O(nk)做出来,方法是这样的。 我们仍然先选一个节点(为了方便我选的就...原创 2018-07-22 23:08:37 · 168 阅读 · 0 评论 -
2018.09.23 bzoj3143: [Hnoi2013]游走(dp+高斯消元)
传送门显然只需要求出所有边被经过的期望次数,然后贪心把边权小的边定城大的编号。所以如何求出所有边被经过的期望次数?显然这只跟边连接的两个点有关。于是我们只需要求出两个点被经过的期望次数。对于一个点uuu,它被经过的期望次数f[u]=∑vf[v]/du[v]f[u]=\sum _v f[v]/du[v]f[u]=∑vf[v]/du[v]这是一个环上的递推式,我们可以用高斯消元解方程组。...原创 2018-09-23 19:09:23 · 114 阅读 · 0 评论 -
2018.10.03 迷宫游戏(状压+bfs)
描述Pluto 已经很久没有玩游戏了,今天 Pluto 难得能够歇一天。于是,Pluto 决定要玩一个非常好玩的迷宫游戏。这个迷宫游戏在一个 n 行 m 列的矩阵上进行,游戏中的任意时刻不能走出这个矩阵。在这个矩阵中,有下列几种元素:. :表示一块平地。X :表示一堵墙,不能经过。S :表示游戏的起点,有且仅有一个。T :表示游戏的终点,有且仅有一个。A~H :表示一种类型的门,每种类...原创 2018-10-03 23:22:19 · 308 阅读 · 0 评论 -
2018.09.28 牛客网contest/197/C期望操作数(状态转移+前缀和递推)
传送门比赛手动打了四项感觉有规律,调了40min+之后重新手算了后面几项发现只有前四项满足规律233。首先这道题只跟q−xq-xq−x有关。我们尝试找找递推关系。我们令f[i]f[i]f[i]表示区间左右端点之差为i时的期望步数。那么显然有:f[0]=f[0]=f[0]=不存在(方便计算可以看做0)f[1]=(f[0]+f[1])2+1f[1]=\frac {(f[0]+f[1])...原创 2018-09-29 00:02:18 · 159 阅读 · 0 评论 -
2018.10.17 NOIP模拟 管道(状压dp)
传送门状压dp好题。怎么今天道道题都有点东西啊对于今天题目神仙出题人先膜为上策:%%%%DzYoAk_UoI%%%%设f[i][j]f[i][j]f[i][j]表示选取点的状态集合为iii,当前在jjj号点的状态总数。然后枚举一个不在集合中的点转移。但是直接这样做会算错。为什么呢?因为我们没有考虑状压时其它子树的影响。因此再记一个数组g[i][j]g[i][j]g[i][j]表...原创 2018-10-17 18:59:48 · 202 阅读 · 0 评论 -
2018.10.20 bzoj1925: [Sdoi2010]地精部落(dp)
传送门dp好题。设f[i][j]f[i][j]f[i][j]表示iii个数结尾是jjj且结尾两个数递增的方案数。那么显然可以对称的定义出g[i][j]g[i][j]g[i][j]表示iii个数结尾是jjj且结尾两个数递减的方案数。那么显然有f[i][j]=g[i][i−j+1]f[i][j]=g[i][i-j+1]f[i][j]=g[i][i−j+1](考虑把第一个序列中每个数k都变成i...原创 2018-10-20 23:20:42 · 108 阅读 · 0 评论