
ACM_分治、递归
我爱吃狮子头
有人在这虚度,有人在这成长
展开
-
分治和递归
转自:https://blog.youkuaiyun.com/dcj0913/article/details/39271721一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法...转载 2018-08-12 16:47:42 · 766 阅读 · 0 评论 -
快速幂
11的二进制为1011,即11== 2º×1+2¹×1 +2²×0 +2³×1 快速幂:a¹¹= a^1*a^2*a^8//快速幂 #include<iostream>using namespace std;int Counting (int a,int b){ int ans原创 2018-02-19 21:05:39 · 258 阅读 · 0 评论 -
阶乘
1.普通阶乘 #include<stdio.h>long long jc(long long n){ return n==0? 1:jc(n-1)*n;}int main(){ printf("%lld",jc(10)); return 0;}2.大数阶乘//本题题目源于HDU 1042 计算N!#include <iostream>...原创 2018-08-12 17:33:26 · 135 阅读 · 0 评论 -
二分法查找
#include<bits/stdc++.h>#define N 10using namespace std;int findx(int a[],int k)//数组名和要找的数 { int l=0,r=N; int mid=(l+r)/2; while(l<r&&a[mid]!=k) { if(a[mid]<k)l=mi...原创 2018-08-12 20:11:53 · 141 阅读 · 0 评论 -
归并排序求逆序对
逆序对定义:对于一个包含N个非负整数的数组A[1..n],如果有i < j,且A[ i ]>A[ j ],则称(A[ i] ,A[ j] )为数组A中的一个逆序对。例如,数组(3,1,4,5,2)的逆序对有(3,1),(3,2),(4,2),(5,2),共4个。归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divid...原创 2018-08-12 20:35:14 · 1078 阅读 · 0 评论 -
斐波那契数列
1、1、2、3、5、8、13、21、34、……1.递归法: 缺点:重复计算的次数太多,效率低。时间复杂度:O(2^N)#include<bits/stdc++.h>using namespace std;long long Fib(long long N){ if (N < 3) return 1; else ...原创 2018-08-12 20:57:27 · 120 阅读 · 0 评论 -
最小生成树_挖沟(求连通全图的最短路径)
例题链接:https://www.nowcoder.com/acm/contest/136/H 题目描述 胡队长带领HA实验的战士们玩真人CS,真人CS的地图由一些据点组成,现在胡队长已经占领了n个据点,为了方便,将他们编号为1-n,为了隐蔽,胡队长命令战士们在每个据点出挖一个坑,让战士们躲在坑里。由于需要在任意两个点之间传递信息,两个坑之间必须挖出至少一条通路,而挖沟是一件很麻...原创 2018-08-19 11:41:00 · 935 阅读 · 0 评论 -
矩阵快速幂(大斐波那契数)
矩阵快速幂就是把快速幂的乘法变成矩阵乘法。应用:求斐波那契数取模(大数)斐波那契数列递推公式(这里取从第二项开始):f(1)=1,f(2)=2,f(n)=f(n-1)+f(n-2)(n>=3) 用矩阵表示为:进一步,可以得出直接推导公式:求第n项斐波那契数就是求1 11 0的(n-1)次方的第一行第一列项,也就是n次方的第一行第二列项#include&...原创 2019-02-25 23:25:40 · 3273 阅读 · 0 评论