2018年9月13日训练总结

首先补完徐州网络赛的B题之后,就上网搜了一些记忆化搜索的资料,看了十几道例题。

个人理解:

记忆化搜索就是利用搜索的特性,在回溯的时候利用动态规划的思想进行状态转移。

一般的for循环dp,是在前面状态的基础之上,做出这一步决策,来保证到目前为止的决策是最优的。

而记忆化搜索,记录了已经遍历过的状态(独一无二的状态)。你做完这一步决策的结果,可以由记忆化直接得出最终的结果。

也就是说你当前状态的最优值不仅与之前状态有关,还与你做出这个决策之后,最终所得的结果有关。而我们想知道最终的结果,就需要遍历许多之后的状态,于是记忆化就大大减少了重复计算的次数(这就是记忆化搜索的最好的地方)。

从网上摘抄的资料:


记忆化搜索递归式动态规划 
1.记忆化搜索的思想 
记忆化搜索的思想是,在搜索过程中,会有很多重复计算,如果我们能记录一些状态的答案,就可以减少重复搜索量 
2、记忆化搜索的适用范围 
根据记忆化搜索的思想,它是解决重复计算,而不是重复生成,也就是说,这些搜索必须是在搜索扩展路径的过程中分步计算的题目,也就是“搜索答案与路径相关”的题目,而不能是搜索一个路径之后才能进行计算的题目,必须要分步计算,并且搜索过程中,一个搜索结果必须可以建立在同类型问题的结果上,也就是类似于动态规划解决的那种。 
也就是说,他的问题表达,不是单纯生成一个走步方案,而是生成一个走步方案的代价等,而且每走一步,在搜索树/图中生成一个新状态,都可以精确计算出到此为止的费用,也就是,可以分步计算,这样才可以套用已经得到的答案 
3、记忆化搜索的核心实现 
a. 首先,要通过一个表记录已经存储下的搜索结果,一般用哈希表实现 
b.状态表示,由于是要用哈希表实现,所以状态最好可以用数字表示,常用的方法是把一个状态连写成一个p进制数字,然后把这个数字对应的十进制数字作为状态 
c.在每一状态搜索的开始,高效的使用哈希表搜索这个状态是否出现过,如果已经做过,直接调用答案,回溯 
d.如果没有,则按正常方法搜索
4、记忆化搜索是类似于动态规划的,不同的是,它是倒做的“递归式动态规划”。 

所以,以后如果遇到问题,需要反复dfs/bfs大量的状态, 而这些状态是有很多的重复的,一定要想到记忆化。它可能用处不止在于dp,还有一些其他结合dfs/bfs的题目,因为好久没做过这样的题目,所以才会忘得很干净,这下要牢记了。

然后继续看了cf的解题报告。有一些计算几何、推公式的题目看不太懂,还有一些地方写错了(害我想了半天= =。),能完全看懂的、看懂一半的、完全看不懂的题数比例大约是4:4:2吧。不过知识点覆盖比较全,也具有较高的思维性,就是一道题得想半天。。。思维等级还是比较低,继续努力吧。

趁java实验的时候练习了大数BigInteger的使用和函数的使用,并且做了几道题练练手。希望遇到大数的题目的时候能够快速写出来。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值