算法
文章平均质量分 60
紫薯C菌
recording...
展开
-
博弈论
博弈论简单介绍就是两个对象在进行某个斗争,按照某种规则,会有先手必赢和后手必赢的局面产生,我们就是要根据不同的规则去研究策略。然后关于博弈论的话,常见的题目都是公平组合游戏;公平组合游戏呢…就是游戏人数为2,二者轮流做出决策,且双方都知道游戏规则;任意一个游戏者在某一确定状态可做出的决策集合只与当前状态有关而与游戏者无关;游戏中的状态不可能多次抵达,游戏以玩家无法行动为结束,且游戏一定会在有限步后以非平局结束;ps:大部分棋类游戏都不是公平组合游戏,像是国际象棋、中国象棋、围棋、五子棋…(因为双方原创 2021-02-09 10:14:53 · 293 阅读 · 0 评论 -
最短路-弗洛伊德算法&狄克斯特拉算法
最短路1.多源最短路定义:现有n个地点,求任意两点间的最短距离算法:弗洛伊德(floyd)算法思想:让每一个点成为中转点,进行"松弛"操作;所谓松弛操作就是要搞出 A+B<C 的效果,举个栗子咱们从软院到计算机学院要走6个单位,但是我们让文学院作为中转点的话,就有了2+3=5<6的效果,这就是进行了松弛操作。我们尝试以不同的点进行松弛操作,保留最近的那种。那么我们要实现弗洛伊德算法的存储的话,一般都是用邻接矩阵实际上就是二维数组来实现的。以上图为例子>我们把它转换成表格,原创 2021-02-05 18:38:18 · 562 阅读 · 1 评论 -
搜索——深搜+广搜
搜索蕴含递归的思想,通过不停的试探去寻求解常用方法有:暴力的搜索、深搜(DFS)、广搜(BFS)引入像是图的遍历一样,按照某个规则去访问图中的所有顶点,且每个顶点只被访问一次。深度优先遍历(DFS)就是要走就先走完一整条路,再返回去走别的可能的路。举个栗子:它的顶点访问次序就是以下几种:V1>V2>V4>V8>V5>V3>V6>V7V1>V2>V5>V8>V4>V3>V6>V7V1>V2>V原创 2021-02-01 17:20:07 · 5986 阅读 · 5 评论 -
筛法1&快速幂&容斥原理
筛法&快速幂&容斥原理>>筛法埃氏筛法筛质数求1~n间的质数个数const int N=1000010;int n,primes[N],cnt; //primes[]记录质数 cnt记录质数个数bool st[N]; //来标记它是质数还是合数,初始化为0即为false规定为质数using namespace std;void get_primes(int n){ for(int i =2;i<=n;i++) { i原创 2021-01-29 17:38:48 · 217 阅读 · 0 评论 -
图论初学
图论学习基础信息定义:图作为一种数据结构,表现的是若干对象的集合,以及这些对象间关系的集合。比如用图表现一个班级里各个同学的关系,则每个同学就是一个对象,所有的同学以及他们之间所有的关系的集合就是图名词解释:1.权值:边上的值,某点到某点的值2.加权无向图:没有方向但有权值3.加权有向图:既有方向又有权值4.有向图:A—>B B—>C5.无向图:A—>B B—>A ;A,B互相连通6.完全图:完全图是一个简单的无向图,其中每对不同的顶点之间都恰连有一条边相连。原创 2021-01-29 12:22:39 · 213 阅读 · 1 评论 -
前缀和、差分、双指针
前缀和&差分&双指针>>前缀和前缀和定义:一个数组的某项下标之前且包括此项元素的所有数组元素的和。一维前缀和设b[]为前缀和数组,a[]为原数组一维前缀和公式:b[i]=b[i-1]+a[i]若要计算区间[l,r]的和,使用公式sum=a[r]-a[l-1]代码如下:int b[10];int a[10];int main(){ for(int i = 1;i<=9;i++) a[i]=1; for(int i原创 2021-01-29 10:27:49 · 202 阅读 · 0 评论 -
常用算法模板总结
算法模板总结(loading…)>>快排void quick_sort(int arr[],int l,int r){ int i=l-1,j=r+1,x=arr[l+r>>1]; //x为分割点 while(i<j) { do i++;while(arr[i]<x); do j--;while(arr[j]>x); if(i<j) swap(arr[i],arr[j]);原创 2021-01-28 13:06:17 · 114 阅读 · 0 评论