随笔分类 - dp
摘要:题目描述 题解: 考试的时候手画打表,然后半个小时磨了个式子:$$f[i][j]=f[i-1][j-1]+f[i][j-1]$$ 交上去$A$的时候都蒙了。 考后才知道原因。 考虑$n$维空间内原来有$i-1$个“球”,所以$f[i][j]+=f[i][j-1]$; 然后为了划分最多,“截面”还是一
阅读全文
摘要:题目描述 题解: 可并堆优化$dp$。 由于$ans$只由$l$与派遣人数决定,我们可以贪心选取总和$<=m$的人。 有两种选择,一种是维护小根堆,一直$pop$到弹出的总和$>m$; 另一种是维护大根堆,一直$pop$到剩下总和$<=m$; 这两种比较一定是维护大根堆更优,因为每次$pop$后剩下
阅读全文
摘要:题目描述 题解: 岛屿之间的边砍/不砍情况有$2^n$种, 但是需要剪掉所有的岛上都首尾相连的情况。 $dp$一下对于完全图没有限制($f$)/有限制($g$)的情况数。 方程:$$f[i]=\sum(C(i-1,j-1)*j^{(j-2)}*f[i-j])$$ $$g[i]=\sum(C(i-2,
阅读全文
摘要:题目描述 题解: 放完前$i-1$个数之后,$i$会让前面的数变成一个整体,而且与后面没有影响。 就有了$dp$方程:$$dp[i]=\sum(k^2*dp[i-k]*(k-1)!*C(i-1,k-1))$$ 拆开组合数之后有这个东西:$$\frac{dp[i]}{(i-1)!}=\sum(\fra
阅读全文
摘要:题目描述 题解: 显然一个整体一定是连续的一段数。 所以我们预处理长度为$len$的一组数的组成方案数就好了。 于是$dp$。 $dp[0]=0$,$dp[i]=i!-\sum(k!*dp[i-k])$ $i!$,这$i$个数瞎放。 $k!*dp[i-k]$,第$i$个数放到倒数第$k+1$位上,此
阅读全文
摘要:题目描述 题解: 很玄学的一道数位$dp$,看了很多篇题解才懂。 直接挂$l$的题解。 代码:
阅读全文
摘要:题目描述 题解: 数位$dp$模板题。 只需要记录上升下降,还有是否在边界上即可。 其中$f,g$是前缀和和后缀和。 代码:
阅读全文
摘要:题目描述 题解: 一看$n$就知道是矩乘加速递推。 问题是怎么推。 不妨认为生成树的边是大号指向小号的。 首先,对于一般节点$x$,$x$可以连到$x-k$,但是连不到$x-k-1$。(废话) 所以我们处理点$x$时要确保$x-k$已经在前面的生成树里面了。 然后就是状态的问题。 由于$x$只能连到
阅读全文
摘要:题目描述: 数据范围:2<=n,m<=8 题解: 很明显需要状压。但是怎么压不知道,压什么不知道。 然后从条件下手。 条件1要求黑色在一起白色在一起,记录轮廓线很容易做到。 条件2要求不能出现$2*2$的同色方格。我们还需要再记录当前位置的左上角。 所以这道题的轮廓线长这样。 丑图。 我们需要确定一
阅读全文
摘要:题目描述 题解: 一道极水的插头$dp$。 根本不需要左右括号分开看,直接都当作括号。 什么三进制四进制,二进制就可做。 讨论比模板要少。 (luogu丧心出题人有hack点。。。) 代码:
阅读全文
摘要:题目描述 题解: 插头$dp$中经典的回路问题。 首先了解一下插头。 一个格子,上下左右四条边对应四个插头。就像这样: 四个插头。 一个完整的哈密顿回路,经过的格子一定用且仅用了两个插头。 所以所有被回路经过的格子有六种状态,即左上,左右,左下,上右,上下,右下。 这几个就是插头$dp$的基本。 然
阅读全文
摘要:题目描述: 给出一棵$n(n<=200000)$的树。每个点有一个权值$w$,表示堵上这个点的花费。 $m$组操作,操作一为将点$x$的权值加上一个非负整数$d$,操作二为询问以点$x$为根的子树内堵上所有根到叶节点路径的最小花费。 题解: 设$h[x]$为$x$的所有子节点的最小花费之和。 一眼看
阅读全文
摘要:题目描述 题解: 一个看起来非常人畜无害的$dp$:$$f[i][k]=min(f[j][k]+cost(j,i))+c[i]$$ 中间那个$cost(j,i)$可以通过$cost(j,i-1)$得到,这个东西是动态的。 用线段树维护一下就好了。 代码:
阅读全文
摘要:题目描述 题解: $dp$。 有$$f[r[i]]=min(f[k]+1)$$。 然后用线段树优化转移就好了。 代码:
阅读全文
摘要:题目描述 题解: 很明显总体路径可以是一直向左/向右,或者先向一个方向跑几步,然后反向跑。 所以我们可以得到四种基本运动方式: LGL:一直向左; RGR:一直向右; LGR:先向左,然后向右回到原点; RGL:先向右,然后向左回到原点。 然后决策单调,分治求解上面四个东西,最后合并出结果。 代码:
阅读全文
摘要:题目描述 题解: 答案显然是$max((q-p)*(e-d))$ 依然先贪心。 对于工厂,我们倾向于$pi<pj,di<dj$的; 对于买家,我们倾向于$qi>qj,ei>ej$的。 于是将一定不是最优解的工厂和买家划掉。 然后我们发现这个东西是满足决策单调性的。 问我怎么证?画一个二维坐标系,然后
阅读全文
摘要:题目描述 题解: 我们可以考虑这样一种情况,有一块$10*10$的土地,还有一块$1*1$的土地。 当然将$1*1$的土地合到$10*10$的土地中了。 所以我们可以先按土地$x$值从大到小排序,然后从前向后扫一边,只将不会被完全覆盖的放到处理的集合里。 这样就可以$dp$了。 有$$dp[i]=m
阅读全文
摘要:题目描述 题解: 这是个多重背包,但是一般的复杂度是过不去这题的。 所以有二进制优化和单调队列优化。 二进制优化是将数量$n$化为多个数,而且这些数能表示出$1~n$中的任意数。 怎么保证? 想起二进制,我们可以将$n$分为$1+2+4+8+……+k$,$k$可以是任意数。 单调队列怎么优化? 我们
阅读全文
摘要:题目描述 题解: 应该是个$dp$; $dp[i][j]$表示第$i$个人涂到第$j$块的最大收益。 推一下式子:$$dp[i][j]=max(dp[i-1][j],dp[i][j-1],dp[i-1][k]+(j-k)*p[i])$$ 对于最后面那个式子可以化一下:$$max(dp[i-1][k]
阅读全文
摘要:题目描述 题解: 题目都提示了, 很明显要导一波式子: $$dp[i]=max( dp[i-1] , \frac{ dp[j] } { A[j]*R[j]+B[j] } * (A[i]*R[j]+B[i]))$$ 后面那个东西相当与将第j天的R[j]个A和1个B绑在一起。 $dp[i-1]$没什么好
阅读全文

浙公网安备 33010602011771号