2017暑假训练国庆小假期总结

  这个假期主要看完了所有网络流的知识点,看了一点简单的建模例子,复习了一下逆元包括快速幂求大数的n次方,然后补了补树状数组和线段树的题。

  对于网络流最后一个知识点,就是有上下界的网络流,所谓上界,就还是以前的边权的最大值,不过难度增加在加了一个边权值的最小值。也就是流过某个边的流量不能低于最小值,也不能超过最大值。解决这类题的思路是把有上下界的最大最小值问题转换成为一般的网络流问题求解。两者的最大区别在于,一般的网络流算法规定初始的流量是0,这样在有上下界的网络流问题的求解中是不对的。这样就引入了一个新的概念,也就是必行弧,他的权值等于流值的下限。然后网络流就被拆分成两个部分,一个是必行弧,一个是最大值于最小值差值构成的边。单并不能保证每次都能走必行弧,所以构造了一组虚拟源汇点,所有必行弧的起点到虚拟源点有一条边,同时虚拟汇点到每个段的终点都有边。然后虚拟的源汇点之间有一条权值为证无穷的边,这样就构造了一个等价的网络,并且从虚拟源点到虚拟汇点的网络流一定经过可行弧。这个网络流可以执行一次判断,若该网络流的最大流等于所有下限之和,那么,原网络的最大流存在,然后去掉所有与虚拟源汇点之间的连边,做一次最大网络流的求算即可得到最大流。

  而后看了几个建模的题目,发现并不是都像一开始那样简单,尤其有的网络流需要拆点,有时候不拆就是错的,仅凭两个题目我也只是能记住这一小类,总结不出来大的规律,可隐隐感觉有一些规律,和通路有关系。后面通过看博客脑补思路。

  对于树状数组的题目,我感觉略有进步,以前看这样的题目是一头雾水,现在发现多想想还是能模拟出来这个场景的,不过有时候可能有一定的偏差,但至少能从一个看似毫无关联的题目里面提炼出这个模型了。然后对于这方面知识点的进步也就是了解了一下离线处理。其实离线处理就是输入完了,把每次询问按要求处理之后再进行求解,而在线就是输入的时候就可以同时进行操作,或者输入完了直接操作,并不用做任何的处理。

  对于线段树,感觉简单的题还是简单,就是个模板,最多就是比如像lazy标记那样的模板,亦或是二维的那样的模板,它复杂,但只要了解了,就是不难,没有什么特别的技巧可言。但难的题目是真的难,和树状数组一样,需要提炼背景中的模板,或者更难的,当工具优化dp,这样的都需要深刻的理解,尤其那个man down,虽说看了博客里面就是一个类似层数的一个线段树处理,本来从一循环到i的一个超级费时的dp瞬间只需要两次就能搞定,理解的没有那么深刻,所以并不能通过自己用纸笔简单的运行一遍就知道为什么可以完成这样的替代。但这确实有些高端,是靠背题背不住的技巧。

  今后的这两周看看网络流的博客,还有二分图,这个在很多网络流的题目里都作为工具被使用,所以最少得达到了解会用。然后总结一下以前的数学知识。

你可能感兴趣的:(开学训练日记)