随笔分类 -  dp

摘要:诶,去年场上不会处理$0$的环,只拿了$60$有点可惜。 我们先不管边边权为$0$的边。 我们先跑一次最短路,令$dis[u]$表示从$1$至$u$的最短路的长度。 那么根据题目的要求,从起点走到$u$号点的路径长度只可能在区间$[dis[u],dis[u]+k]$中。 令$f[i][j]$表示当前 阅读全文
posted @ 2018-10-10 21:48 AlphaInf 阅读(235) 评论(0) 推荐(0)
摘要:题目大意:现有$n$条排成一行的木板,每个木板有一个目标颜色。你每次能将一个区间内的木板分别染成它们的目标颜色,而这次染色的代价为这个区间内不同目标颜色的木板的数量的平方。问将全部木板染成目标颜色的最小代价。 数据范围:$n≤50000$,颜色数量$≤50000$。 这题我们显然可以$dp$,令$f 阅读全文
posted @ 2018-09-30 08:12 AlphaInf 阅读(305) 评论(0) 推荐(0)
摘要:为啥我去年这么菜啊。。。。。 我现在想了$20min$后打了$10min$就过了$qwq$。 我们用$f[i][j]$表示当前深度为$i$,访问了状态$j$中的所有点的最小代价。 显然$f[i][j]=min(f[i-1][k]+i\times get(k,$j^k$)) $其中$k$为$j$的子集 阅读全文
posted @ 2018-09-27 10:22 AlphaInf 阅读(263) 评论(2) 推荐(0)
摘要:题目大意:你有一个$n*m$的网格(有边界),你从$(1,1)$开始随机游走,求走到$(n,m)$的期望步数。 数据范围:$n≤10$,$m≤1000$。 我们令 $f[i][j]$表示从$(1,1)$随机游走到$(i,j)$的期望步数。不难推出: 如果$(i,j)$与边界不想邻,则有 $f[i][ 阅读全文
posted @ 2018-07-28 11:41 AlphaInf 阅读(534) 评论(3) 推荐(7)
摘要:哇我太菜啦555555 不妨钦定我们需要访问的点集为$S$,在$S$已知的情况下,我们令$f(x) $表示从$x$走到点集$S$中任意一点的期望步数。 若$x∈S$,则显然$f(x)=0$,否则$f[x]=\frac{1}{d[x]}\sum f[ch[x]]+1$。其中$d[x]$表示与$x$相连 阅读全文
posted @ 2018-07-25 08:58 AlphaInf 阅读(410) 评论(2) 推荐(0)
摘要:这题吼啊... 然而还是想了$2h$,写了$1h$。 我们发现一个性质:若一个序列$p$能作为前缀和,那么在序列$p$中,包含序列$p$最后一个数的所有子序列必然都是非负的。 那么,我们 令$f[i]$表示状态$i$中所有数字全部作为前缀和的方案数。 令$g[i]$表示状态$i$中所有数字所组合成的 阅读全文
posted @ 2018-06-11 22:06 AlphaInf 阅读(313) 评论(0) 推荐(1)
摘要:今年年初的时候参加了PKUWC,结果当时这一题想了快$2h$都没有想出来.... 哇我太菜啦.... 昨天突然去搜了下哪里有题,发现$loj$上有于是就去做了下。 结果第一题我5分钟就把所有细节都想好了啊5555.... 场上$60pts$消失... 显然,我们可以用$f[i][j]$表示节点$i$ 阅读全文
posted @ 2018-05-31 11:09 AlphaInf 阅读(339) 评论(4) 推荐(1)
摘要:题目大意:用$[1,2^k-1]$之间的证书构造一个长度为$n$的序列$a_i$,令$b_i=a_1\ or\ a_2\ or\ ...\ or a_i$,问使得b序列严格递增的方案数,答案对$10^9+7$取模。 数据范围,$n≤10^{18}$,$k≤30000$。 考虑用dp来解决这一题,我们 阅读全文
posted @ 2018-05-26 22:44 AlphaInf 阅读(482) 评论(0) 推荐(0)
摘要:上一篇blog已经讲了单调队列与单调栈的用法,本篇将讲述如何借助单调队列优化dp。 我先丢一道题:bzoj1855 此题不难想出O(n^4)做法,我们用f[i][j]表示第i天手中持有j只股票时,所赚钱的最大值。 不难推出以下式子: $f[i][j]=max\left\{\begin{aligned 阅读全文
posted @ 2018-03-03 09:01 AlphaInf 阅读(320) 评论(0) 推荐(0)
摘要:题目传送门:https://www.luogu.org/problem/show?pid=1941 不难看出,此题为动态规划。 我们用$f[i][j]$表示从第一行到达第i行第j列时点击屏幕的最少次数。 不难推出,$f[i][j]=min(f[i-1][j+y[i-1]],f[i-1][j-k*x[ 阅读全文
posted @ 2017-10-29 20:32 AlphaInf 阅读(361) 评论(4) 推荐(1)
摘要:题目大意:给你一个字符串,问你这个字符串的rank,如果这个字符串不合法,请直接输出0。(一个合法的字符串是对于∀i,有c[i]<c[i+1]) 字符串s的rank的计算方式:以字符串长度作为第一关键字,字符串大小作为第二关键字,将该字符串集排序,若从小到达数到的第k个字符串为s,则s的rank为k 阅读全文
posted @ 2017-10-27 18:13 AlphaInf 阅读(260) 评论(0) 推荐(0)
摘要:题目大意:给你一个区间$[l,r]$,求在该区间内有多少整数在二进制下$0$的数量$≥1$的数量。数据范围$1≤l,r≤2*10^{9}$。 第一次用记忆化dfs写数位dp,感觉神清气爽~(原谅我这个蒟蒻,原先写的四不像数位dp至少需2h,用真记忆化dfs不到半小时写出) 我们用$f[i][j]$表 阅读全文
posted @ 2017-10-27 14:28 AlphaInf 阅读(232) 评论(0) 推荐(0)
摘要:题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4417 我们不难发现,这是一道动归题。 考虑最原始的动归:f[i][j]表示从起点走到(i,j)这个点的方案数。 不难推出f[i][j]=Σ(f[i][j-2k+1]+f[i-1][j-2k 阅读全文
posted @ 2017-10-26 10:40 AlphaInf 阅读(489) 评论(0) 推荐(0)
摘要:题目描述 有两个仅包含小写英文字母的字符串 A 和 B。现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一 个新的字符串,请问有多少种方案可以使得这个新串与字符串 B 相等?注意:子串取出 的位置不同也认为是不同的方案。 输入 阅读全文
posted @ 2017-10-21 23:32 AlphaInf 阅读(323) 评论(0) 推荐(0)