c++知识总结
文章平均质量分 98
此专栏会不定期更新有关c++方面的内容,包括c++的基本函数,数论(组合数学),并查集,位运算,树状数组,线段树等等......欢迎你的关注!
XiaoZheng2003
博客暂时弃更
展开
-
C++指针
概念有时你申请一个变量(如int x;),计算机就会随机给你分配一个空间,你可以在那个空间内改变数值。就像计算机给了一个叫做a的小房子,但是只能在里面放int类型的值。比如你输入x=-1,计算机首先会把小房子找到,然后把-1放在里面。(如果里面有其他值,就拿出来) 那这个小房子的地方在哪里呢,就存放在地址里。每一个变量都有一个地址(即是它在内存中的位置)。所谓指针就是一个箭头→,指向一个地址,原创 2017-05-16 18:54:28 · 688 阅读 · 0 评论 -
KM算法
最佳匹配什么是完美匹配如果一个二分图,X部和Y部的顶点数相等,若存在一个匹配包含X部与Y部的所有顶点,则称为完美匹配。 换句话说:若二分图X部的每一个顶点都与Y中的一个顶点匹配,**并且**Y部中的每一个顶点也与X部中的一个顶点匹配,则该匹配为完美匹配。什么是完备匹配如果一个二分图,X部中的每一个顶点都与Y部中的一个顶点匹配,**或者**Y部中的每一个顶点也与X部中的一个顶点匹配,则该匹配为完备匹原创 2017-05-02 17:39:42 · 16326 阅读 · 1 评论 -
二分图匹配——匈牙利算法和KM算法
二分图的概念二分图又称作二部图,是图论中的一种特殊模型。 设G=(V, E)是一个无向图。如果顶点集V可分割为两个互不相交的子集X和Y,并且图中每条边连接的两个顶点一个在X中,另一个在Y中,则称图G为二分图。 二分图的性质定理:当且仅当无向图G的每一个回路的次数均是偶数时,G才是一个二分图。如果无回路,相当于任一回路的次数为0,故也视为二分图。二分图的判定如果一个图是连通的,可以用如下的方法判定原创 2017-04-14 20:41:54 · 48732 阅读 · 2 评论 -
树型DP
概念树型DP即在树上进行DP。树是无环图,顺序可以是从叶子到根节点,也可以从根到叶子节点。一般树型DP的特征很明显,即状态可以表示为树中的节点,每个节点的状态可以由其子节点状态转移而来(从叶子到根的顺序),或是由其父亲节点转移而来(从根到叶节点的顺序),也可是两者结合。找出状态和状态转移方程仍然是树型DP的关键。例题没有上司的晚会题目描述Ural大学有N个职员,编号为1~N。他们有从属关系,也就是说原创 2017-04-27 13:32:48 · 900 阅读 · 0 评论 -
二叉查找树
普通二叉查找树二叉查找树是指具有下列性质的非空二叉树若根结点的左子树不空,则左子树的所有结点值均小于根结点值;若根结点的右子树不空,则右子树的所有结点值均不小于根结点值;根结的左右树也分别为二叉排序树;显然,对二叉排序树进行中序遍历,可得出结点值递增的排序序列。 下图即是一棵二叉查找树。其中序遍历为8,11,23,39,46,68,71,75。树的基本操作const int MAXN =原创 2017-03-27 13:58:53 · 923 阅读 · 4 评论 -
线段树基础知识
线段树的概念在一类问题中,我们需要经常处理可以映射在一个坐标轴上的一些固定线段,例如说映射在OX轴上的线段。由于线段是可以互相覆盖的,有时需要动态地取线段的并,例如取得并区间的总长度,或者并区间的个数等等。一个线段是对应于一个区间的,因此线段树也可以叫做区间树。线段树的构造思想线段树是一棵二叉树,树中的每一个结点表示了一个区间[a,b]。每一个叶子节点表示了一个单位区间。根节点表示的是“整体”原创 2017-03-11 10:17:15 · 1360 阅读 · 0 评论 -
树状数组基础知识
问题提出已知数组a[],元素个数为n,现在要求a数组中i到j区间内的和(1<=i<=j<=n).思考我们完全可以存储sum[1,k](k=1,2,……),然后对任意给定的查找区间[i,j],都可以方便的用ans=sum[1,j]-sum[1,i-1],当然这只是没有元素改变的情况下的比较优化的解法.那么对于对于数组中的元素随时变更的情况下,我们能否还这么做呢?如果仍然采取这样的方法,则每次数据有更新原创 2017-03-04 10:53:39 · 679 阅读 · 0 评论 -
位运算主要知识
什么是位运算? 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。 C++提供了6种位运算符来进行位运算操作:& 按位与| 按位或^ 按位异或~ 按位取反>> 右移(右边消失,左边补符号位)位运算的操作数是整数类型或字符型.按位与&运算原创 2017-02-25 12:28:07 · 14631 阅读 · 4 评论 -
并查集主要知识
什么是并查集?并查集是一种树型的高级数据结构,主要用于处理不相交集合的合并及查询问题。它在计算机科学中有着广泛的应用,例如求解最小生成树、亲戚关系的判定、确定无向图的连通子图个数、最小公共祖先问题等,都要用到并查集。什么是集合?集合是数学中最基本的构造之一,将一组满足某种性质的对象放在一起就形成了集合。集合中包含的对象称为集合中的元素,集合中的元素是无序而且唯一的。人们常用大写英文字母A、B、C等来原创 2017-02-25 10:03:31 · 5068 阅读 · 1 评论 -
论整数输出优化
背景前些天,看到有些大牛写了输出优化,于是乎,我就想比较一下输出优化和printf、cout的速度。 于是,想起ctime头文件和clock函数可以测试程序在运行期间花费的时间,于是就有了灵感,写出了一个测试程序。程序write和putint函数是两种输出优化函数,然后以下是测试程序。#include<windows.h>#include<iostream>#include<cstdio>#原创 2017-04-06 14:11:26 · 1141 阅读 · 0 评论 -
论整数输入优化
背景前些天发现了写读入优化和不写读入优化的区别。。。别人的代码: 我的代码: 我似乎发现了什么东西。。。然后我点进第一名的代码一看:void get(int &res){ char ch;bool flag=0; while(!isdigit(ch=getchar())) (ch=='-')&&(flag=true); for(res=num;isdigit(ch=原创 2017-04-08 16:48:36 · 722 阅读 · 0 评论 -
栈stack
stack的概念栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 如上图,栈当中最先进去的最后出来。 这就是stack遵循原创 2017-04-28 14:00:22 · 867 阅读 · 0 评论 -
组合数学系列问题
要明白什么是组合数学,首先我们要知道什么是组合数。什么是组合数?从m个不同元素中,任取n(n≤m)个元素并成一组,叫做从m个不同元素中取出n个元素的一个组合;从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数。计算公式:Cnm=m!n!(m−n)!C_m^n= {{m!} \over {n!(m-n)!}}查看原文怎么计算组合数?点击这里什么是第二类斯特原创 2017-02-10 17:23:00 · 3429 阅读 · 0 评论 -
结构体
结构体概念在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。 在C语言中,可以定义结构体类型,将多个相关的变量包装成为一个整体使用。在原创 2017-04-28 13:34:02 · 838 阅读 · 0 评论 -
【c++函数库】函数总结
max_element min_element函数*max_element(n,n+len);//返回数组中的最大值,n为数组名,len为数组长度 *min_element(n,n+len);//返回数组中的最小值,n为数组名,len为数组长度 头文件:#include<algorithm> using namespace std; 数组的长度怎么求?sizeof(n)/sizeof(int)即原创 2016-12-27 18:06:03 · 959 阅读 · 1 评论