ACM ---- 知识点
米诺minoz
这个作者很懒,什么都没留下…
展开
-
树链剖分 - 知识点
一、定义树链剖分就是将树分割成多条链,然后利用数据结构(线段树、树状数组等)来维护这些链。可以非常友(bao)好(li)的解决一些树上操作(友情提示:学树链剖分之前请先掌握线段树)二、思想树链剖分的思想比较神奇它的思想是:把一棵树拆成若干个不相交的链,然后用一些数据结构去维护这些链那么问题来了,如何把树拆成链?(1) 简单定义首先明确概念:重儿子:父亲...转载 2019-08-06 17:13:37 · 399 阅读 · 0 评论 -
几种排序知识讲解
一:几种排序方法排序算法的复杂度:ACM常用算法排序二、1、冒泡排序:冒泡排序是一种简单的排序算法,但是时间复杂度较大。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。...原创 2018-10-16 20:23:12 · 778 阅读 · 1 评论 -
优先队列——Priority_queue 详解
转载大佬博客一、入门介绍1、优先队列是一种特殊的队列,这种队列会自动的把队列里的数排序(默认从大到小,使用“<”判断)而且还可以把数按照特定的方法排列!(包括结构体和重载"<")2、优先队列的头文件,需要包括:#include<queue>using namespace std;声明:一个优先队列声明的基本格式是: prior...转载 2018-10-11 20:58:11 · 644 阅读 · 0 评论 -
卡特兰数
大数的运算用 JAVA 实现一、卡特兰数(catalan数)1、定义:是一种经典的组合数,经常出现在各种计算中, 其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263...原创 2018-09-26 10:07:20 · 293 阅读 · 0 评论 -
模板模板
此博客转自:点击打开链接(多谢大佬的整理)一:素数打表:对10000以内素数打表:#include <iostream>#include<algorithm>#include<stdlib.h>#include<stdio.h>#include<string.h>#include<math.h&...转载 2018-04-11 22:03:49 · 257 阅读 · 0 评论 -
全排列(下一个排列,算法)
给出一个字符串S(可能有重复的字符),按照字典序从小到大,输出S包括的字符组成的所有排列。例如:S = “1312”, 输出为:1123 1132 1213 1231 1312 1321 2113 2131 2311 3112 3121 3211 Input 输入一个字符串S(S的长度 &amp;amp;lt;= 9,且只包括0 - 9的阿拉伯数字) Output 输出S所包含...原创 2018-04-30 20:01:02 · 1492 阅读 · 0 评论 -
有关二叉树求解模板
/*在这三个遍历中,只调用了一个Visit()函数,只输出此时的根节点即可原因是:每访问一个点,都可以是一个根节点,然后都可以有左右根结点*//*BiTree 本身已经是一个指针了,为什么要用Bitree &amp;T呢?首先明确一个问题:Bitree &amp;T 中的&amp;是引用,这个也就是取地址的意思,这个只有C++中才有,你也可以用C中的指针,用Bitree *T,但...原创 2018-05-04 21:49:20 · 209 阅读 · 0 评论 -
确定比赛名次(拓扑排序)
先 po一个 拓扑排序的模板/*拓扑排序: 用来安排先后顺序 先找出入度为 0 的点,将其入队列,然后将与之相连的点入度减 1 ,再去找入度为 0&amp;amp;amp;nbsp; 的点*/ if(!map[u][v]) //考虑重边的情况&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; {&amp;amp;原创 2018-05-09 20:47:25 · 206 阅读 · 0 评论 -
DFS 与 BFS
转载至:(https://blog.csdn.net/zhang_xiaomeng/article/details/73274259)图的一些相关概念: 简单图(Simple graph):无环并且无平行边的图. 路(path):内部点互不相同的链。 如果无向图G中每一对不同的顶点x和y都有一条路,(即W(G)=1,连通分支数)则称G是连通图,反之称为非连通图。 两端点相同的路...转载 2018-05-10 20:42:35 · 209 阅读 · 0 评论 -
STL 中map 和 set 的知识点总结
转的某位大佬的总结 大佬的博客地址 STL中的容器有顺序容器 (vector,list,deque),关联容器(map,set)还有一些其他容器。根据不同的场合选择不同的容器,会有意想不到的收获。Map是单词mapping(映射)的缩写Set是单词set(集合)的意思;Map和set内部的元素不可以重复...转载 2018-05-20 16:56:52 · 218 阅读 · 0 评论 -
C++ 中的三种反转函数
第一种:使用algorithm中的reverse函数?123456789101112131415#include &amp;lt;iostream&amp;gt;#include &amp;lt;string&amp;gt;#include &amp;lt;algorithm&amp;gt;using na转载 2018-05-20 17:01:14 · 6028 阅读 · 0 评论 -
并查集详解
转自 大佬地址例子就是杭电上的畅通工程:首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这题,问还需要修几条路,实质就是求有几个连通分支。如果是1个连通分支,说明整幅图上的点都连起来了,...转载 2018-05-23 22:00:11 · 363 阅读 · 0 评论 -
矩阵快速幂基础知识
转自 大佬地址/*先介绍以下矩阵的基础知识矩阵:有 n 行 m 列组成一个 n*m 的矩阵矩阵具有加减乘运算(除可以用乘间接地来表示,如A/B=a*(1/B),所以这里就不写除了)1.矩阵的 加 运算( 减 运算类似)满足的条件:两个矩阵的行、列 必须相同1 2 + 1 2 = 2 43 4 3 4 6 82.矩阵的乘运算满足的条件:...转载 2018-05-26 20:11:22 · 308 阅读 · 0 评论 -
算法模板——KMP(字符串匹配)
看了算法书和博客,发现了next[] 可以有两种用法,不过kmp的算法思想都是一样的1、入门介绍什么是KMP算法:KMP算法要解决的问题就是在字符串(也叫主串)中的模式(pattern)定位问题。说简单点就是我们平时常说的关键字搜索。模式串就是关键字(接下来称它为P),如果它在一个主串(接下来称为T)中出现,就返回它的具体位置,否则返回-1(常用手段)。 首先,对于...原创 2018-10-10 18:43:48 · 443 阅读 · 0 评论 -
网络流入门知识详解
转载博客 本图示最大流的一个实例。由此,可以引出最大流的一些基本的定义和概念一:介绍1、网络流的相关定义:源点:有n个点,有m条有向边,有一个点很特殊,只出不进,叫做源点。 汇点:另一个点也很特殊,只进不出,叫做汇点。 容量和流量:每条有向边上有两个量,容量和流量,从i到j的容量通常用c[i,j]表示,流量则通常是f[i,j]. 最大流:把源点比作工厂的话,问题就是求...转载 2018-11-01 21:47:17 · 407 阅读 · 0 评论 -
线段树代码
以 hdu1166为例(区间求和、单点修改)一、定义const LL MAXX = 5e4+10;int sum[MAXX << 2];int a[MAXX];二、区间求和时,更新结点信息void PushUp(int id){ sum[id] = sum[id<<1] + sum[id<<1|1];}三、建树...原创 2019-08-06 10:52:31 · 400 阅读 · 0 评论 -
vector 用法详解
目录一、介绍1 定义2 特性二、用法1 一维 vector2 二维 vector一、介绍1 定义 vector(向量): C++中的一种数据结构,确切的说是一个类. 它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.2 特性...原创 2019-07-27 17:42:39 · 998 阅读 · 0 评论 -
线段树从零开始
一、为什么使用线段树题目一:10000个正整数,编号1到10000,用A[1],A[2],A[10000]表示。修改:无统计:1.编号从L到R的所有数之和为多少? 其中1<= L <= R <= 10000.方法一:对于统计L,R ,需要求下标从L到R的所有数的和,从L到R的所有下标记做[L..R],问题就是对A[L..R]进行求和。这样求和,对于每个询问,需...转载 2019-08-05 15:02:01 · 236 阅读 · 0 评论 -
并查集知识点
以为自己已经会用并查集了呢,碰到了一个带全路径并查集的问题,发现自己居然都没太理解具体思想是什么啊渣渣一、举个例子在讲并查集之前我们先举一个例子。(这个例子是出自别人之手,大都知道的例子)话说江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,绝对不打自己的朋友。而且他们信奉...原创 2019-04-09 14:02:52 · 225 阅读 · 0 评论 -
并查集——带权路径
一、概念引入普通的并查集仅仅记录的是集合的关系,这个关系无非是同属一个集合或者是不在一个集合。而带权并查集,不仅记录集合的关系,还记录着集合内元素的关系或者说是元素连接线的权值。二、实现1、求 v 数组带权并查集有一个新的数组叫做意义是:从当前节点到根节点的有向距离(这里定义A到B的有向距离为dis时,B到A的有向距离为-dis)而对于两个点对的距离,如果他们不...原创 2019-04-11 16:23:13 · 1238 阅读 · 1 评论 -
组合数学部分公式
转自转载 2019-03-19 15:29:54 · 356 阅读 · 0 评论 -
认识C++ 库中的 bitset 类型
转自大佬博客一、位是用来保存一组项或者条件的 yes/no(1或者0)信息的一种简洁方法,那么位集就是二进制位的有序集。C++中标准库提供的bitset类在我们程序中就很有效的简化了对于位集的处理。bitset对象的定义我们要使用 bitset,首先需要包含头文件bitset。和vector对象不一样的是bitset类型对象的区别仅在其长度而不在其类型。在定义bitset的时候...原创 2019-03-06 16:33:04 · 483 阅读 · 0 评论 -
蓝桥-01字串的四组解法
Description对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。Input本试题没有输入。Output输出32行,按从小到大的顺序每行一个长度为5的01串。Sample Output00000000010001000...原创 2019-03-05 21:53:22 · 476 阅读 · 0 评论 -
C++ 保留小数的用法
在C语言中,我们学过 Printf 输出格式 来控制输出几位小数 printf("%.7ld\n",ans); // 四舍五入在 C++ 中,学习另外的方法1、首先 满足四舍六入五成双 的法则那为什么我用CB测试出来的是 奇数舍去;偶数进位呢?????cout<<setiosflags(ios::fixed)<<setprec...原创 2019-03-05 21:42:32 · 10962 阅读 · 0 评论 -
最小生成树详解
一、概念1、最小生成树是一副连通加权无向图中一棵权值最小的生成树如下图黑线表示的是一个最小生成树2、一个连通图可能有多个生成树。当图中的边具有权值时,总会有一个生成树的边的权值之和小于或者等于其它生成树的边的权值之和。广义上而言,对于非连通无向图来说,它的每一连通分量同样有最小生成树,它们的并被称为最小生成森林。二、相关性质1、个数多个最小生成树在一些情况...原创 2019-03-07 16:15:19 · 5484 阅读 · 0 评论 -
二部图定义+着色法判断二部图
一、二部图定义: 1、二分图又称双分图、二部图、偶图,指顶点可以分成两个不相交的集 和 ( U、V皆为独立集,使得在同一个集内的顶点不相邻(没有共同边)的图2、二分图又称作二部图,是图论中的一种特殊模型。 设 是一个无向图,如果顶点 V 可分割为两个互不相交的子集 ,并且图中的每条边 所关联的两个顶点 和 分别属于这两个不同的顶点集 ( in , in ),则称图 ...原创 2018-11-17 11:16:34 · 13586 阅读 · 0 评论 -
数据结构 —— 关键路径详解
转一、定义引入:1、AOV:有向图中,用顶点表示事件,用有向边表示活动之间开始的先后顺序,则称这种有向图为AOV(Activity On Vertex)网络;AOV网络可以反应任务完成的先后顺序(拓扑排序)。2、AOE:在实际应用中,活动除了先后关系外,还需考虑时间上的约束在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动的持续时间,称这...转载 2018-11-21 11:17:23 · 4554 阅读 · 0 评论 -
矩阵快速幂(51nod)
1113 矩阵快速幂 基准时间限制:3 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 给出一个N * N的矩阵,其中的元素均为正整数。求这个矩阵的M次方。由于M次方的计算结果太大,只需要输出每个元素Mod (10^9 + 7)的结果。Input 第1行:2个数N和M,中间用空格分隔。N为矩阵的大小,M为M次方。(2 &lt;= N &lt;= 100, 1 &lt;=...原创 2018-05-27 22:09:34 · 253 阅读 · 0 评论 -
最小生成树—畅通工程
Description 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。 Input 测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M ( &amp;lt; 100 );随后的 N...原创 2018-07-15 17:21:36 · 189 阅读 · 0 评论 -
最短路问题
博客来源: 转自 大佬博客 迪杰斯特拉算法 最短路径问题介绍问题解释: 从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径,称为最短路径解决问题的算法:1、迪杰斯特拉算法(Dijkstra算法)2、弗洛伊德算法(Floyd算法)3、SPFA算法2、Dijkstra算法介绍算法特点:/*迪杰斯特卡算法按路径长度递增次序产...原创 2018-07-16 14:59:24 · 2886 阅读 · 0 评论 -
高斯消元学习总结+例题
有具体的类型代码,先整理下来以后有空仔细分析转大佬博客整数类型高斯消元返回值的情况-2表示有浮点数解,但无整数解 -1表示无解 0表示唯一解 大于0表示无穷解,并返回自由变元的个数其他说明有equ个方程,var个变元。增广矩阵行数为equ,分别为0到equ-1,列数为var+1,分别为0到var.#include <algorithm>#inclu...转载 2018-07-29 21:48:46 · 4515 阅读 · 0 评论 -
树状数组知识点
一、概念树状数组又称为 二叉索引树 也称作 Binary Indexed Tree,又叫做Fenwick树;它的查询和修改的时间复杂度都是 log(n),空间复杂度则为 O(n)这是因为树状数组通过将 线性结构转化成 树状结构,从而进行跳跃式扫通常使用在高效的计算数列的前缀和,区间和通常用下图来表示但是这个树是怎么构建的呐?这里就不得不感叹大牛们的...原创 2018-07-31 14:20:00 · 251 阅读 · 0 评论 -
树状知识详解(转载)
转自大佬博客树状数组基础树状数组是一个查询和修改复杂度都为log(n)的数据结构。主要用于数组的单点修改&&区间求和.另外一个拥有类似功能的是线段树. 具体区别和联系如下:1.两者在复杂度上同级, 但是树状数组的常数明显优于线段树, 其编程复杂度也远小于线段树.2.树状数组的作用被线段树完全涵盖, 凡是可以使用树状数组解决的问题, 使用线段树一定可以解决...转载 2018-07-31 16:48:10 · 314 阅读 · 0 评论 -
线段树知识点
首先线段树能解决什么问题假设有编号从1到n的n个点,每个点都存了一些信息,用[L,R]表示下标从L到R的这些点。线段树的用处就是,对编号连续的一些点进行修改或者统计操作,修改和统计的复杂度都是O(log2(n)).线段树的原理,就是,将[1,n]分解成若干特定的子区间(数量不超过4*n),然后,将每个区间[L,R]都分解为少量特定的子区间,通过对这些少量子区间的修改或者统计,来实现...原创 2018-07-31 16:49:50 · 372 阅读 · 0 评论 -
有关树状数组例题
1——————————A - StarsN个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?Input每个测试实例第一行为一个整数N,(N <= 1...原创 2018-08-01 11:15:02 · 693 阅读 · 0 评论 -
动态思想———— 数位 dp
转载 大佬博客一、基础篇——介绍 1、概念: 数位dp是一种计数用的dp,一般就是要统计一个区间 [A , B ] 内满足一些条件数的个数。 所谓数位dp,字面意思就是在数位上进行dp。 数位的含义:一个数有个位、十位、百位、千位......数的每一位就是数位啦! 之所以要引入数位的概念完全就是为了dp。数位dp的实质就是 换一种暴力...转载 2018-08-03 11:48:46 · 710 阅读 · 0 评论 -
前向星+链式前向星 ——图的存储
转载链接Malash's Blog一、前向星1、我们首先来看一下什么是前向星. 前向星是一种特殊的 边集 数组 ,我们把边集数组中的每一条边按照起点从小到大排序, 如果起点相同就按照终点从小到大排序,并记录下以某个点为起点的所有边在数组中的起始位置和存储长度,那么前向星就构造好了. 用 len[i] 来记录所有以i为起点的边的个数用 head[i]...转载 2018-08-03 15:25:13 · 444 阅读 · 0 评论 -
LCA——最近公共祖先(Tarjan算法)
转载一、入门介绍首先是最近公共祖先的概念(什么是最近公共祖先?):在一棵没有环的树上,每个节点肯定有其父亲节点和祖先节点,而最近公共祖先,就是两个节点在这棵树上深度最大的公共的祖先节点。 换句话说,就是两个点在这棵树上距离最近的公共祖先节点。 所以LCA主要是用来处理 当两个点仅有唯一一条确定的最短路径时的路径。 有人可能会问:那他本身或者其父亲...转载 2018-08-03 16:05:29 · 1076 阅读 · 2 评论 -
划分树知识点详解
一、介绍概念1、划分树是一种基于线段树的数据结构。主要用于 快速求出(在log(n)的时间复杂度内)序列区间的区间内的第k大数。第 k 大数:在已经排序好的序列中,找 第 k 的数字就是 第 k 大数字例如 : 1 2 3 4 5 第 3 大数字是 3 4 3 6 5 1 第 2 大...转载 2018-08-07 16:06:33 · 333 阅读 · 0 评论 -
最小树形图
转载大佬博客一、相关定义定义:设G = (V,E)是一个有向图,它具有下述性质:G中不包含有向环; 存在一个顶点vi,它不是任何弧的终点,而V中的其它顶点都恰好是唯一的一条弧的终点,则称 G是以vi为根的树形图。最小树形图就是有向图G = (V, E)中以vi为根的树形图中权值和最小的那一个。另一种说法:最小树形图,就是给有向带权图一个特殊的点root,求一棵以root为根节...转载 2018-08-09 21:23:08 · 436 阅读 · 0 评论