![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法+成长
文章平均质量分 90
拔丝奶糖54
许我向你看,lllll
展开
-
最短路算法之dijkstra算法
一、dijkstra算法Dijkstra算法是由E.W.Dijkstra于1959年提出,又叫迪杰斯特拉算法,它应用了贪心算法模式,是目前公认的最好的求解最短路径的方法。算法解决的是有向图中单个源点(某个点,给的那个点)到其他顶点的最短路径问题,其主要特点是每次迭代时选择的下一个顶点是标记点之外距离源点最近的顶点。但由于dijkstra算法主要计算从源点到其他所有点的最短路径,所以算法的效原创 2017-10-30 07:36:05 · 571 阅读 · 0 评论 -
组合数学习+组合数取模+牛客网第六场C. Generation I(组合数学)+逆元的两种方法模板
C(n,m)性质: 1.C(n,m)=C(n,n-m)=C(n-1,m-1)+C(n-1,m); 设S(n,m)=C(n,0)+C(n,1)+……+C(n,m),则 2.S(n,m) = S(n,m-1) +C(n,m); 3.S(n,m) = 2*S(n-1,m) - C(n-1,m); 4.S(n-1,m)=(S(n,m)+C(n-1,m))/2;(可由1推出);组合数取模模板:...原创 2018-08-02 09:15:55 · 277 阅读 · 0 评论 -
hdu 6333 Problem B. Harvest of Apples
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6333 莫队的时间复杂度:O(N*sqrt(N)); 组合数加莫队,离线算法,好像也可以在线做,莫队是对区间进行更新, 莫队分块的原因: 如果我们把一个数列,当该数列的长度为n的时候,我们以根号n为一段,分出来的段数不超过根号n,如果我们要进行区间的处理,比如加法减法等,可以对于修改区间[ ...原创 2018-08-02 21:20:41 · 111 阅读 · 0 评论 -
强连通分量
#include <iostream>#include <cstring>#include <cstdio>#include <cstdlib>using namespace std;#define MAXN 10010#define MAXM 100010struct Edge{ int v, next;} edge[MA...原创 2018-10-08 14:13:36 · 161 阅读 · 0 评论 -
求连通块
有向图或无向图的连通块数#include<bits/stdc++.h>using namespace std;int fa[105];struct point{ int x,y;} a[105];void init(int n){ for(int i=1; i<=n; i++) { fa[i]=i; } re...原创 2018-10-07 09:52:26 · 245 阅读 · 0 评论 -
SPFA+优先队列优化模板+输出路径
题目:poj2457我是题目#include&lt;cstdio&gt;#include&lt;iostream&gt;#include&lt;algorithm&gt;#include&lt;cstring&gt;#include&lt;cmath&gt;#include&lt;queue&a原创 2018-09-19 20:42:05 · 749 阅读 · 0 评论 -
给图着色(dfs)
【1】求给图着m个色的方案:#include<bits/stdc++.h>using namespace std;//判断k顶点与其所有相邻顶点的着色是否发生冲突bool OK(int k,int color[105],int graph[105][105]){ for (int i = 1; i < k; i++) { if (gra...原创 2018-09-18 20:00:35 · 809 阅读 · 0 评论 -
凸包
【1】求凸包的周长#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#define N 105#define eps 1e-8using namespace std;struct p...原创 2018-09-11 18:45:38 · 119 阅读 · 0 评论 -
计算几何之判断两条直线的关系
原理: 共线: 由叉积的原理知道如果p1,p2,p3共线的话那么(p2-p1)X(p3-p1)=0。因此如果p1,p2,p3共线,p1,p2,p4共线,那么两条直线共线。叉积为0说明共线。平行: 由向量可以判断出两直线是否平行。如果两直线平行,那么向量p1p2、p3p4也是平等的。即((p1.x-p2.x)(p3.y-p4.y)-(p1.y-p2.y)(p3.x-p4.x))==0说明向...原创 2018-09-10 19:08:53 · 2993 阅读 · 0 评论 -
单调队列和单调栈学习笔记
单调栈:单调栈是指一个栈内部的元素是具有严格单调性的一种数据结构,分为单调递增栈和单调递减栈。单调栈有两个性质: 1.满足从栈顶到栈底的元素具有严格的单调性 2.满足栈的后进先出特性越靠近栈底的元素越早进栈 元素进栈过程 对于一个单调递增栈来说 若当前进栈的元素为 a 如果a < 栈顶元素则直接将a 进栈 如果 a >= 当前栈顶元素则不断将栈顶元素出栈知道满足 a &...原创 2018-07-31 22:32:06 · 541 阅读 · 0 评论 -
map iterator it 的用法
#include&lt;iostream&gt;#include&lt;map&gt;using namespace std;int main(){ int a[5]; map&lt;int,int&gt;M; a[0]=1;M[a[0]]++; a[1]=2;M[a[1]]++; a[2]=2;M[a[2]]++; a[3]=4;M[a[3...转载 2018-07-28 22:40:52 · 2323 阅读 · 0 评论 -
二叉树的建立与遍历
二叉树的建立: 先序建立#include<cstdio>#include<iostream>#include<algorithm>#include<stdlib.h>using namespace std;typedef struct node{ struct node *leftchild; struct node *rightchild; int data;原创 2017-11-04 20:06:18 · 253 阅读 · 0 评论 -
二叉树的概念及创建及遍历
二叉树是一种特殊的树。它的每个结点至多只有两棵子树。基本术语: 根:有且仅有一个特定的称为根Root的结点。(但是在介绍子孙结点的时候可以把某个子树单提出来,这样这个子树也有根)。 结点层:根结点的层定义为1;根的孩子为第二层结点,依此类推。 树的深度:树中最大的结点层。 结点的度:结点子树的个数。 树的度: 树中最大的结点度。 叶子结点:也叫终端结点,是度为 0 的结点。 分枝结点:原创 2017-10-31 14:06:09 · 214 阅读 · 0 评论 -
hash初步学习
Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于Hash表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。 更新ing原创 2017-11-21 00:44:16 · 138 阅读 · 0 评论 -
hrbust 1013及short int ,int 区别
Eqs Time Limit: 5000 MS Memory Limit: 65536 K Total Submit: 731(302 users) Total Accepted: 413(278 users) Rating: Special Judge: No Description Consider equations having the following form:原创 2017-11-21 00:48:52 · 213 阅读 · 0 评论 -
poj 3349 Snowflake Snow Snowflakes
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 44089 Accepted: 11538 DescriptionYou may have heard that no two snowflakes are alike. Your task is to原创 2017-11-21 07:21:39 · 175 阅读 · 0 评论 -
vector [1]介绍了两个应用,快速排序,SPFA
*转载于、小哲C的博客:http://blog.csdn.net/a823337391/article/details/21181253 写的很好,存起来,怕以后找不到*vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的转载 2017-11-21 07:27:52 · 187 阅读 · 0 评论 -
set容器及hdu 2072
hdu的一道题2072 单词数单词数Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 56921 Accepted Submission(s): 14218原创 2017-11-18 11:39:06 · 214 阅读 · 0 评论 -
最近公共祖先 Tarjan+poj1330
最近公共祖先离线算法Tarjan 一篇解释的很好的博客: http://www.cnblogs.com/JVxie/p/4854719.htmlpoj 1330 题目传送门:http://poj.org/problem?id=1330 模板代码:#include <stdio.h>#include <string.h>#include <iost...原创 2018-04-16 12:18:02 · 185 阅读 · 0 评论 -
无根树转化为有根树
#include<iostream> #include<vector> usingnamespacestd; constintMAXN=1000; intn,p[MAXN]; vector<int>G[MAXN]; voiddfs(intu,intfa){//递归转化为以u...原创 2019-07-24 10:34:35 · 757 阅读 · 0 评论