日记(周中)

xiaoxiao2021-02-28  12

     前几天,做了一次测试题。

     那个测试题,实话说并不难,只不过,其中有几道题,需要读入文件作为输入,但是没有认真看题,没注意到这个,结果一直在第一道数据上出错。当然,这个也是一种教训,以后估计就会有用了。通过做这些题,还有做了点cf的题,发现,知道很多算法没什么用,关键要会用,能够运用自如,这个算法就算掌握了。还有cf的水题,有的时候很简单,有的时候也是需要想一想的,需要考虑全面,能练习一下思维的严谨性,尤其是当你每做过这种类型的题的时候。

     现在学完了很多算法,我又看了看网上好评的刘汝佳的那本紫书,虽然很多算法都学过了,但是上面也有很多不知道的东西,看了之后启发比较大,还有就是上面对于有的算法介绍比较少,不如我们训练的类型多,这个也可能是不足了,也不对,这本书,在最前面说过,很多算法网上有很多介绍了,他就不在写了,可能也有这方面的原因把,而作为这本书的补充,那本训练指南,对于我们现在做的dp类型的题的介绍,也是没有几页,看来书上是不会有模板之类的资料了,但是对于数学,几何,数据结构,训练指南里有大篇幅的介绍与例题讲解,看来这些很重要了,但是毕竟只是一本书,要充分学习还得利用网络的强大功能。

     树形dp中最经典的,比较麻烦的还是背包问题,其中很多是依赖性背包或者分组背包,至于0 1背包什么的估计是给我们新手练手用的,真正出题感觉不会出0 1背包之类的吧,除非又加了很多限制,比如精度,时间限制,需要很多小技巧,当然我是知道的不多,一般也是大众化的那些。

     树形的背包问题,大多状态方程差不多,就算有所差别,也不大,其实,很重要的一点是怎么更新数据,是先更新孩子结点还是先更新本结点,是全部赋初值,还是只给几个地方赋值,还有就是输入数据,存储数据的措施,有的题输入数据复杂,需要好好对待,有的时间复杂度要求高,但总结来看,存储树的结点信息,目前大众化的操作有两种,一种是用stl 的vector,一种是用结构体,我感觉,前者方便容易理解和实现,或者有些许麻烦,但是前者似乎在数据量比较大的时候会超时(做一个题的时候试的,不知道是不是我代码的原因),后者效率高一些。

转载请注明原文地址: https://www.6miu.com/read-2300291.html

最新回复(0)