boxmoe_header_banner_img

Hello! 欢迎来到DRheEheAM的blog!

加载中

文章导读

Jul 26th-27th 暑假集训总结 | dp及dp优化


avatar
DRheEheAM_Garylv229憨毛怪 2026-07-27 31

AI Summary

总结了两天dp及优化集训:多重背包二进制拆分、矩阵快速幂加速广义斐波那契、按值域dp+矩阵快速幂解决Neko问题。

题单链接:ZR 2026 Summer C 7.26 ZR 2026 Summer C 7.27

单调队列 / 滑动窗口 (洛谷-P1886)

?为什么我要总结一道黄题 跳过!

宝物筛选 (洛谷-P1776)

这道题明显是一个标准的多重背包。但是观察到标准多重背包时间复杂度 O(nWmi)\large O(nW\sum m_i) ,直接爆炸。

考虑优化,注意到按照 20,21,222^0 ,2^1 ,2^2\cdots 的顺序拆 mim_i ,并记录最后的差值为 cic_i ,分别作为元素存起来,当成01背包写即可。

正确性证明就是这么拆分一定可以组合出 [0,mi][0,m_i] 之间的任意一个整数。

时间复杂度 O(nWlogmi)\large O(nW\log\sum m_i)

广义斐波那契数列 (洛谷-P1349)

考虑 P1962 斐波那契数列 ,我们使用了矩阵快速幂加速转换,直接套过来就好了,跳过。

Neko Rules the Catniverse (Large Version) (CodeForces-1152F2/洛谷-CF1152F2)

发现枚举 nn 时间容易炸,考虑按值域dp。

考虑dp状态 {S,i,j}\{S,i,j\} ,表示当前已经选到第 ii 个数,已经选了 jj 个数,[im+1,i][i-m+1,i] 区间内的选择情况为 SS (状压)

那么,选第 ii 个数,则:

dpi+1,j+1,2S+1dpi,j,S×(popcount(S)+1)dp_{i+1,j+1,2S+1}\larr dp_{i,j,S}\times(\text{popcount}(S)+1)

不选第 ii 个数,则:

Si+1,j,2Sdpi,j,SS_{i+1,j,2S}\larr dp_{i,j,S}

发现转移过程与序号无关,于是使用矩阵快速幂加速。



评论(0)

查看评论列表

暂无评论


发表评论

DRheEheAM_Gary Blog