清北学堂----北京集训

7月16日

集训第一天,毛晗杨给我们讲的基础算法和数论。基础算法讲了分块和三分等知识点,分块之前接触过,个人认为和莫队有一定的相似之处,都是把整个数组分为一个个大小相等的块,然后对块进行操作,每个块大小为√n,这样的分块方法时间复杂度最低。三分其实和二分没有本质上的区别,就是找两个中间的断点分别比较,可以找函数最高点。数论讲了很多,大多数以前学过,但是还是有不懂得地方。下午考试,没啥可说的。正常发挥,但是线段树写跪了也是没想到,要不我应该可以拿奖。

7月17日

第二天讲了几种数据结构,栈,队列,并查集,链表,二叉堆之前都学过,但是可并堆左偏树之前没有了解过,就是一种可以进行合并的堆,只有一个操作,就是把较小的树合并到较大的树右子树下面,然后进行比较,把较大的子树放在左子树,然后进行下一次合并。这个还是比较好理解的,但是平衡树就不太好理解了。就是一个满足左子树比根节点小,右子树比根节点大的一棵树,为了保证树上查找的复杂度,需要让树的层数尽量的少,这时就需要平衡树。我学了一个treap,但好像不能维护旋转操作,比splay差了一些,就是每个节点随机一个值,然后靠这个随机值维护堆的性质。这样的话可以满足插入慢查找快了。主要操作就是旋转,左旋和右旋。然后讲了个trie树,就是单词查找树,但是没讲过多用法。又讲了hash,讲了几个基本操作,然后应用也讲了一些,和我平时写法一样,所以没啥区别(没想到老师也用unsign long long)。最后讲了st表和线段树还有stl,线段树很简单,st表也不难,stl我不是经常用,我只用queue和priority_queue,其他的我都不经常用,但是发现set好像很好使的样子,有点兴趣。

7月18日

上午自习,把左偏树调了一下,调出来之后又写了一个treap板子,但是洛谷板子没调过去。下午讲了一些动规,今天讲的动规没啥难度。都是老套路,所以比较轻松。

7月19日

讲了一天动规,之前觉得动规没啥难度,现在感觉不一样。里面的转移方程根本推不出来,炸了。线性dp还好,不是很难。背包和优化得想一想(尤其是单调队列优化,之前学的那次根本没明白)。。。状压dp没讲,但是我有点想听。树形dp之前会,算是唯一轻松一点了。dp的方程还是不会自己推,而且推对了边界搞不好,所以dp方面还要加强。

7月20日

今天讲了一下图论算法。先讲最小生成树的Kruskal算法,比较好理解,但是关于最小生成树的应用就比较奇怪了,比较懵,但是不是不能懂。然后是最短路,老师推荐我们用dij,然后还告诉我们dij的堆优化,这次NOI好像卡SPFA了,有点可怕。。。但是SPFA有一个作用就是可以判断是否有负环。之后讲拓扑排序,上个假期就学过,所以没啥压力,应用有些难度,拓扑也可以判断是否存在环。(无论正负都可以),后来讲了tarjan,其实挺好理解,但是被学长说的给吓怕了所以一直没学。就是每个点存一个深度,再存一个联通的最小深度,然后进行dfs,存在栈里,什么时候相等,什么时候开始弹出。弹出到和之前相等的一个点就结束,弹出的点是一个强连通分量,然后进行下一次dfs。这样的话可以判断一张图中有多少个强连通分量。查分约束系统有点没听懂,有点懵,但是只是知道他是干啥的,然后知道是怎么操作的,但是原理不大清楚。树上倍增就是一种倍增思想,之前学长将LCA的时候就是这么讲的。(这么长时间了我LCA都不会写了),最大生成树是一种迷之操作,没想到和最大路的求法是一样的,就是把边权取相反数,然后跑最小生成树。。。但貌似直接通过排序将边从大到小排就行了。环套外向树没听懂,不知道有什么其他的性质。

7月21日

上午讲了几个算法,然后考试!炸了,T1暴力不知为啥0分,T2不能用区间合并来做(我做了2个半小时,没dfs拿分多),T3没时间,只能固输。。。

7月22日

NOIP题目讲解,讲了一些NOIP的题,其中有的做过。现在仔细想想,好像NOIP可以得不少分(但是心里没底)。考试的题自己想不出来,但是一听都会也是硬伤。。。集训就这样结束了。

猜你喜欢

转载自www.cnblogs.com/DukeLv/p/9354633.html