基础二分
Mollnn
这个作者很懒,什么都没留下…
展开
-
快速幂算法基础
快速幂算法主要应用于求幂模的问题。 我们可以先定义一个问题: 如何求2^31的最后一位数?显而易见,结果当然是8.这个问题是具有特殊性的,可以用某些特殊解法来处理。但是作为我们对快速幂的学习例程来看,我们需要从特殊问题中寻找一般算法。 对于这个问题,最脑残的算法是:#include <iostream> #include <cstdio> #include <cmath> using name原创 2016-09-10 16:28:19 · 477 阅读 · 0 评论 -
二分算法基础 第一章 简单二分
二分算法是一种效率极高的算法(思想),在很多的实例中都得以运用,比如快排和归并排序。本文将对二分算法的一些基础内容以及使用进行讨论。入门-二分查找 我们先来看一个二分查找的例子。(p2searching.cpp)#include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm>原创 2016-09-10 16:31:18 · 666 阅读 · 0 评论 -
归并排序与逆序对
归并排序是一种运用了二分算法的排序,其基本原理可以理解为拆分对合并。利用归并排序可以便捷地求出逆序对的个数。参考代码如下所示:#include <iostream> #include <cstring> #include <cmath> using namespace std; int n,a[100000],x[100000],ans=0; void msort(int l,int r) {原创 2016-09-11 11:50:50 · 481 阅读 · 0 评论 -
矩阵乘法在递推问题中的简单应用
这里我们以Fib问题为例。Fib数列是一个著名的递推数列,其规律可表示为f[i]=f[i-1]+f[i-2];我们要做的事,就是求出fib数列的第n项。由于这个数字可能很大,因此只需要输出它对10007取模的结果。 这里我们约定:对于80%的数据,n<10^8。对于100%的数据,n<10^10。几乎不需要经过多少思考,我们就能写出一个80分版本:#include <cstdio> using n原创 2016-10-29 19:29:30 · 484 阅读 · 0 评论