计数+动态规划

发现如果横纵坐标分别考虑的话并不是很好做,考虑将其旋转 45° ,每步操作变为横纵坐标同时改变 (1) 。将横纵坐标拆开分别处理,枚举最后会和的位置 (O(nm)) 计算即可。

很明显是需要数位dp的,我们可以使用dp套dp的做法,回想使用 nlogn 复杂度求最长上升子序列的时候,维护了一个单调增的单调栈,使用二进制维护哪些元素在单调栈中,即可状压转移。

直接区间dp。设 dp[i][j][k] 为区间 [i,j] 中最小值为 k 的时候,两端都在区间内部的询问区间的最大贡献,枚举中转点转移即可。

一个重要特点是当 (k leq 7) 的时候非树边一定只有两条。我们可以 (O(nk)) 求出树上长度为 (1 ext{~} k-2) 的链数量,然后很容易随便就可以拼出大小为 k 的环统计答案即可了。

首先考虑朴素想法,枚举每一个点做根,然后多重背包用二进制拆分一下,树上背包求解,可以得到复杂度 (O(n^2mlogd)) 的做法。如果使用单调队列优化多重背包的话可以得到 (O(n^2m)) 。依旧不能通过本题(原话

树上联通块使用淀粉质,考虑经过当前根的方案,进行计算。然后递归子树在子树内部求解。可以发现这是正确的。复杂度可以做到 (O(nmlogn))

决策单调性优化 dp 模板。

还有几道并不是很会直接溜掉吧

原文地址:https://www.cnblogs.com/nao-nao/p/15014934.html