树形dp的练习算是刚刚结束,但是忙于做题的同时对于题目的理解却是不够透彻,今天又是回顾了一下,看到一些题的时候却会愣一下,似乎没见过一样,两天不复习就会有些生疏了。。
最开始的dp专项是数位dp,这个dp顾名思义就是针对数的各个位进行dp,题目的主要出题方式是问区间内满足条件的数个数,不少题总感觉似乎是一样的做法,但是具体实现却是大不一样,大部分都是十进制数的题目,偶尔会牵扯到二进制题目,或许以后还会遇到其他刁钻的进制吧。说起来总结,除了题目的出题套路比较相似外,还有dp的形式也是趋于固定,大多数的dp都是dp[位数][其他条件]=满足条件的数量(感觉有点废话),除了部分题目,大多数题目的思路还是偏唯一的,但是很多题目,在看网上的题解之后,除了基本的方法之外,还有许多很灵巧的办法,虽然说模板是很好用的一种方法,但是灵活的使用别的办法却是更应该锻炼的地方。
后来的也是刚刚结束的树形dp,也是很简单暴力,就是树与dp的结合,但是题目的辨识度却不算很高,如果混在一堆树的题目中,辨认dp还是不如数位dp容易的,但是一般都是最大价值或者最小时间,emmm,还算好吧,格式方面,大多数就是dp[node][其他条件]=以node为根节点的数最大价值或最小时间,比起其他的dp来说,树形dp基本上离不开dfs,对于递归操作熟练度很高(毕竟是树,肯定要递归的),所以有时候就算有了dp的具体思路,反而在递归上绕乱了,导致就算是思路正确也做不出来,绕了很多的弯子,如何去递归,递归变量怎么设置,都是很容易绕晕的点,但是做几次之后稍微好一些,感觉就是一个熟练度的积累,想吃透还是要下功夫的。
这里就稍微写一下自己的心得吧,例题其他博客整理的够多够细了,估计复习回顾我也不会看自己博客,哈哈。
另外就是最近这段时间经历了几场训练赛,感受到实际比赛能力还是有所欠缺,因为时间原因,不少题目很难再花费大量时间去思考了,更多的就是一段时间做不出来,遇到瓶颈,就开始看题解,比起之前反复去钻研,这样虽然效率有所提高,但是思维方面还是有所欠缺,毕竟现在学习的东西还是太少,汲取新知识还是首要目的,但是学而不思则罔吧,在掌握了知识和技巧之后,还是要多花花时间独立思考几道题,比赛的题目总是不止单一的知识点,大多数的都是几个知识点互相穿插,就像之前说的,灵活的思维有时候比模板更为重要,学的东西毕竟是有限的,但是人的思考却可以有千万种结果(虽然这样说,总感觉在给学习怠慢找借口。。)。
时间还是紧张的,努力督促自己吧。