暑假学习日记2013/7/22

    今天打了一下学校的个人赛,仍然是CF上的题.总的来说水平有限,能dp出来的dp出来了,能找规律的也找了,能构造的也构造了,但是复杂的组合数学,或者是图论搜索,还真的打不出来了...

    再说下今天的学习的一些算法吧,主要是看了一下最大流和最小费用流,对拍了一下代码,个人对最大流的理解也深入了一点,但是对算法的正确性,以及最大流最小割定理的证明,都觉得不太懂,后来还有二分图的匹配,用最大流的思想来看豁然开朗,找增广路的思想感觉挺重要的.学最大流就看了两个算法,Flord和Dicnic,分别跑了一下POJ3187的Flow problem,Flord比Dicnic快,应该是因为该题的点少(N<=15),所以Dicnic广搜的意义不大吧,反而拖慢的进度。然后就看了下模运算的东西,逆元的求法其实就是那么回事  ax=1(mod p) 相当于存在k使得 ax=pk+1  ax-pk=1 解这个方程就好了,就是典型的exgcd啦,注意到当gcd(a,p)!=1时无解,所以说逆元求的时候一般都是对素数吧。后来看了一下费马小定理,多年前搞奥数竞赛的时候学过,还看过怎么证的,不过数论这东西,从来都不是一般人搞得起的,所以就不细究其怎么证的了,结论就是一个 x^p=x(mod p) 当p为素数,x整除p时有  x^(p-1)=1(mod p), x^(p-2) *x =1(mod p) .当p为素数时,一个数x的逆元就是x^(p-2)次方。有了这些求逆元的方法,以后求组合数的中间步骤就可以化简一下了。对了,今天还补了一下昨天没看完的旋转卡壳求对踵点,利用叉积判断先转到那个方向的方法甚是神奇,别的旋转的方法慢慢学习吧。

总结一下:

1.旋转卡壳求对踵点

2.Flord最大流算法

3.Dicnic最大流算法

4.逆元

5.费马小定理

原文地址:https://www.cnblogs.com/chanme/p/3204547.html