ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

2025国庆dp

2025国庆dp

经典例题

摆渡车

设fi表示i这个时刻发车最小答案,枚举上一次发车的时间j,容易转移

但这是O(t^2)

考虑优化

1.斜率优化

2.发现n,m<t,设计fi这种状态很浪费

优化1:若两次发车间隔>2m,完全可以再发一辆车,于是复杂度O(tm)

优化2:若某次发车之前的m个时刻内都没有人,这个点是废点,只会用作优化1,于是直接fi=fi-m转移

最终复杂度O(T+n*m^2)

3.更改dp状态

gi,j表示运走了前i个人,第i个人的等待时间为j

则ti + j就是第i个人接走的发车时间

考虑分段的经典思路:i和i-1是否同一辆车

简单转移

其中不在同一辆车可以前缀min优化

复杂度O(nm)

是否还可以继续优化?

考虑对人做分段

而不是对时间分段

考虑每次发车,要不就是在有人来的时间点发车,或者上一个人发车结束后紧接着发车

预处理后一种情况,枚举上一个发车的点

复杂度O(min{nn,nm})

dp=观察性质+搜索+状态优化+转移优化

树形DP

道路

设fu,i,j表示u到根,i条L边,j条R边未被指定

枚举左右儿子指定哪条边即可

答案是f[1][0][0]

初始化所有叶子

树上染色

对每条边算贡献

树上背包

数位DP

需要记录是否顶着上界,是否处于前导0

发现dfs可以很好的解决这个问题

windy数

板子

花神的数论题

Beautiful numbers

返回列表