2019年4月10日训练日记

数位dp小结:

1、问题特点

①一般来说是求某个区间内的符合与每一数位有关的性质的数个个数

②数据范围在1e9以上,即区间很大

③求区间内第几个①条件的数,通常是再套个二分

2、感悟总结

①实际上是一种特殊的记忆化搜索,记忆的状态与每一数位有关

②根据题目特点将数拆成k进制形式,通常下界为0(如果不是下界就再开一个数组表示下界),ans(l,r)=ans(r)-ans(l-1)

③进行状态表示时,注意同一层的状态不能相交,且并起来就是所有状态(不漏不重复)。每一维的表示都与题目要求的数的性质有密切联系

④注意是从高位到低位进行搜索还是反着的

⑤最重要的难点还是状态的表示即转移,需要在大量的练习中慢慢体会

状压dp小结:

1、问题特点

①一般来说是求最优值或者合法解的个数

②某个数据范围在20以内

③状态压缩只是一种状态表示方法,能灵活与其他知识点结合使用

④注意是几进制压缩(通常为二进制)

2、感悟总结

①通常有两种方法进行状态转移,即dfs或for循环,具体用哪个视题目而定

②状态比较多时,可以先预处理合法状态(如果预处理复杂度也较高,可以考虑使用二分、hash等算法优化)

③对不合法状态进行剪枝可以大大提高程序效率

④无论是几进制压缩,都要注意状态的变化情况,有的题目会卡内存就要考虑是否使用滚动数组

⑤我个人是比较喜欢这个算法的,主要在于喜欢它状态表示的神奇。最重要的难点还是状态的表示即转移,还是一样需要在大量的练习中慢慢体会

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值