【Trick】【DP】

  • 想知道如何实现双关键字dp吗click it!
  • 三进制状压可以用四进制来写,从而用位运算方便计算
  • 枚举一个二进制数i的真子集可以通过如下代码进行:
for(int j=(i-1)&i;j;j=(j-1)&i);
  • x=0nCnx2x可以用来表示对于每个n位2进制数,枚举其所有子集的总枚举量,用二项式定理可知结果为3n,可以用来算状压dp复杂度
  • 树形背包的上下界一定要想清楚,要卡的严一点,具体复杂度不会证,但只要卡到最小就是对的,一般来说写成刷表更容易一些
  • 树上背包复杂度利用上下界优化,可以优化到O(NM)或O(N^2),当然也有其他的优化方法,例如先序遍历优化,左儿子右兄弟表示法等复杂度分析
  • 涉及时间的题目,考虑以时间为阶段DP
  • 在涉及单调队列优化和斜率优化等优化时,往往刷表法不能进一步的优化,必须要换成填表法。
  • 数位dp的init数组,记得在主函数中调用
  • 初始化递推数组时,要注意收益为0和非法情况要区分开!!!P1280 尼克的任务
  • 斜率优化时,用单调队列或单调栈维护凸包时,考虑新加入的点是否有可能横坐标相同,需要特判。维护下凸包时,保留下面的点,删除上面的点;维护上凸包时,保留上面的点,删除下面的点。
  • 当对一个序列进行dp时,注意如果这个序列的dp顺序不影响答案,可以考虑按某种关系排序,使得序列具有某种性质,从而更方便转移[NOI2015] 寿司晚宴
  • 状压dp的转移顺序,有时候要从二进制数中1的个数从少到多转移
  • 状压dp的转移通常比较复杂,很多时候用刷表更容易实现
  • 考虑对于决策集合是否满足某种性质,从而只有一个特殊点是最优的[JSOI2009]火星藏宝图
  • 考虑数形结合,看是否能用单调队列维护 道路游戏
posted @   glq_C  阅读(78)  评论(1编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示