摘要:一道单调队列优化$DP$ "原题链接" 首先想到的应该是$O(n^3)$的朴素$DP$。 定义$f[i][j]$表示第$j\sim i$块干草堆作为顶层时的最大高度。 $\qquad\qquad f[i][j]=\max\limits_{k=1}^{j 1}\{f[j 1][k]\}+1,(sum[
阅读全文
摘要:一道需要用堆初始化的$DP$ "原题链接" 显然对于每一个部分,当$b[i]$为$a$对于部分的中位数时,差错最小。设$S(x,y)$表示$x\sim y$这一部分的差错。 $DP$的转移方程应该并不难推。 定义$f[i][j]$表示前$i$个数字分成$j$组导致的差错的最小值。 $\qquad\q
阅读全文
摘要:一道状压$DP$ "POJ原题链接" "洛谷原题链接" 很显然的状压,$1$表示种植,$0$表示荒废。 将输入直接进行状压,而要满足分配的草场是适合种草的土地,即是分配时的状态中的$1$,在输入对应的状态中也是$1$,而$0$对应$0,1$都可以。 设输入的这行状态为$a[i]$,分配时的这行状态为
阅读全文
摘要:一道计数类$DP$ "原题链接" 先用$DP$计算方案数,再枚举木板,并将$C$不断减去方案数,直到得出所求方案。 定义$f[i][j][k]$表示用$i$块木板构成栅栏,其中最左边的木板高度从小到大排在第$j$块,$k$表示这块木板是低位还是高位(低位为$0$,高位为$1$)。 $\qquad\q
阅读全文
摘要:一道计数类$DP$ "原题链接" 我们可以用$n$个节点能构成的无向图总数减去$n$个点能构成的不连通无向图的数量即可得到答案。 因为$n$个点之间最多能有$\dfrac{n\times(n 1)}{2}$条边,而每次选边构成无向图,对于每一条边只有选与不选两种,所以$n$个点能构成的无向图总数为$
阅读全文
摘要:一道计数类$DP$ "原题链接" 我们可以先计算从左上角到右下角总的路径,再减去经过黑色方格的路径即是答案。 总路径数可以用组合数直接计算:$C_{H+W 2}^{H 1}$ 因为从左上角到右下角必须走$H+W 2$步,而其中必须向右走$H 1$步,向下走$W 1$步,所以这就相当于是从$H+W 2
阅读全文
摘要:一道单调队列优化$DP$。 "原题链接" 设$f[i][j]$表示前$i$个工匠粉刷前$j$块木板(可以有不刷的木板)能获得的最大报酬。 1. 第$i$个工匠可以不刷第$j$块木板,此时$f[i][j]=f[i 1][j]$。 2. 第$j$块木板可以不刷,此时$f[i][j]=f[i][j 1]$
阅读全文