摘要: 当题目中数据较大,而且计算中出现过除法的时候。往往取模会出错 当计算 (A/B) % c 等价于 (A*B1)% c 其中 B1 是 B 的逆元。 那么逆元如何求呢。 先给出逆元的定义 a*x ≡1 (mod n) ,如果x是方程的解,则x称作 a 关于模 n 的逆。 a的逆元存在是有条件的: 方程 阅读全文
posted @ 2016-10-30 15:41 夫复何求 阅读(553) 评论(0) 推荐(0) 编辑
摘要: 今天重新复习了一下树状数组- -发现真的是一个很简洁的东西 引用请注明出处:http://blog.csdn.net/int64ago/article/details/7429868 写下这个标题,其实心里还是没底的,与其说是写博帖,不如说是做总结。第一个接触树状数组还是两年前,用什么语言来形容当时 阅读全文
posted @ 2016-07-13 18:59 夫复何求 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 经常会有类似的题目,如迷宫问题,在一个矩阵图中给定出发点和目标点,每次只能上下左右移动,求到目标点的最短走法,或者说是一共有多少种走法。 思路其实很简单,深搜、广搜。相对比较而言,广度优先搜索更加实用于求最短的走法(步数) 在矩阵图中的广搜需要注意一下几点. 1、确定每步的走法:不同题的走法可能不同 阅读全文
posted @ 2016-07-12 21:35 夫复何求 阅读(681) 评论(0) 推荐(0) 编辑
摘要: 所谓的快速幂,实际上是快速幂取模的缩写,简单的说,就是快速的求一个幂式的模(余)。在程序设计过程中,经常要去求一些大数对于某个数的余数,为了得到更快、计算范围更大的算法,产生了快速幂取模算法。 其实相当于二分(╯﹏╰) 原理:(大家可以自己去想) :我就不证明了。 我们可以得出以下的结论: 1.如果 阅读全文
posted @ 2016-07-11 22:01 夫复何求 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 需要注意的地方 :将所有的边权从小到大依次排序,按从小到大依次加入边,每次对加入的边进行如下操作: 1.找出边的两点。 2.判断两点的父亲节点是在同一个集合里。 3.如果不在同一个集合,在将两点所在的集合合并 :Union,且计数器+1; 5.当计数器=n-1(总点数)时 ,停止查找。此时只有一个集 阅读全文
posted @ 2016-07-11 21:44 夫复何求 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 我们可以这样考虑: 归并排序是将数列a[l,h]分成两半a[l,mid]和a[mid+1,h]分别进行归并排序,然后再将这两半合并起来。 在合并的过程中(设l<=i<=mid,mid+1<=j<=h),当a[i]<=a[j]时,并不产生逆序数;当a[i]>a[j]时,在 前半部分中比a[i]大的数都 阅读全文
posted @ 2016-07-11 20:10 夫复何求 阅读(1417) 评论(0) 推荐(0) 编辑
摘要: Dijkstra 算法不仅是求图中最短路径的O(N²)算法 在关于图的动态规划中可以将题目转换为图,再用该算法进行DP 代码如下 #include<iostream> // made by Huing#include<cstdio>#include<cstring>#include<cmath>us 阅读全文
posted @ 2016-07-10 17:42 夫复何求 阅读(101) 评论(0) 推荐(0) 编辑