在寒假的前半段集训里面,我有着除本身应该学习的知识以外,还在双号日的做题之中,也找到了在之前学习的算法之中存在的一些小问题。比如在结构体排序之中,我经常会将代码写成这样
bool cmp(edge a,edge b)
{
if(a.w != b.w) return a.w < b.w;
}
而这样写的话可能会造成RE,虽然自己不太理解这之中的奥秘,不过大概是因为我并没有排在a.w = b.w 这种情况下的排序。当然,这肯定是有用的,因为之前写的题能过,那是因为可能数据刚好过了。总之,这是一个大问题。
总结一下吧,在这个寒假小集训之中,我们学习了并查集,最小生成树,其中包括了克鲁斯卡尔算法(从边开始搜索),普里姆算法(从点开始搜索)。还有最短路,分别包括迪克斯特拉算法,弗洛伊德算法。在寒假这7天当中,大概做到了可以手敲并查集,克鲁斯卡尔,普里姆(不完全熟悉)。并掌握了两种并查集的写法,并且可以稍许灵活使用,也算并查集入门了。由于克鲁斯卡尔是带权并查集的改良,所以也算入门了克鲁斯卡尔,而普里姆因为不经常使用的关系,所以并不多熟悉。
而最短路里面的东西,比如说迪克斯特拉算法,由于是我由普里姆算法推倒过一遍,所以有点印象。但是,没怎么用所以想要很熟悉的手敲出来也可能是不现实的,因为动脑想还是需要一定的时间。
总而言之,其实学的东西都是一些思路,在这其中我觉得最重要的一点,就是经过不断的做题,从而获得的代码力的提升。从最开始的写出一个并查集不断WA不断改错 , 到后面的一遍过,都能证明这一点。而在找BUG的过程中我也了解到了持之以恒的重要性。而我也体会到了改了一下午BUG过后改出来的快感,虽然可能只是一个很小的错误。可是也能让我实力有所提升。当然,也让我爱上了改BUG。(笑)
希望在下半段的集训当中能有更好的表现,并且能有比寒假上半段更有效的提升。