![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
考试必备
文章平均质量分 98
XiaoZheng2003
博客暂时弃更
展开
-
组合数学系列问题
要明白什么是组合数学,首先我们要知道什么是组合数。什么是组合数?从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 · 3385 阅读 · 0 评论 -
并查集主要知识
什么是并查集?并查集是一种树型的高级数据结构,主要用于处理不相交集合的合并及查询问题。它在计算机科学中有着广泛的应用,例如求解最小生成树、亲戚关系的判定、确定无向图的连通子图个数、最小公共祖先问题等,都要用到并查集。什么是集合?集合是数学中最基本的构造之一,将一组满足某种性质的对象放在一起就形成了集合。集合中包含的对象称为集合中的元素,集合中的元素是无序而且唯一的。人们常用大写英文字母A、B、C等来原创 2017-02-25 10:03:31 · 4385 阅读 · 1 评论 -
位运算主要知识
什么是位运算? 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。 C++提供了6种位运算符来进行位运算操作:& 按位与| 按位或^ 按位异或~ 按位取反>> 右移(右边消失,左边补符号位)位运算的操作数是整数类型或字符型.按位与&运算原创 2017-02-25 12:28:07 · 14544 阅读 · 4 评论 -
树状数组基础知识
问题提出已知数组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 · 644 阅读 · 0 评论 -
二叉查找树
普通二叉查找树二叉查找树是指具有下列性质的非空二叉树若根结点的左子树不空,则左子树的所有结点值均小于根结点值;若根结点的右子树不空,则右子树的所有结点值均不小于根结点值;根结的左右树也分别为二叉排序树;显然,对二叉排序树进行中序遍历,可得出结点值递增的排序序列。 下图即是一棵二叉查找树。其中序遍历为8,11,23,39,46,68,71,75。树的基本操作const int MAXN =原创 2017-03-27 13:58:53 · 901 阅读 · 4 评论 -
线段树基础知识
线段树的概念在一类问题中,我们需要经常处理可以映射在一个坐标轴上的一些固定线段,例如说映射在OX轴上的线段。由于线段是可以互相覆盖的,有时需要动态地取线段的并,例如取得并区间的总长度,或者并区间的个数等等。一个线段是对应于一个区间的,因此线段树也可以叫做区间树。线段树的构造思想线段树是一棵二叉树,树中的每一个结点表示了一个区间[a,b]。每一个叶子节点表示了一个单位区间。根节点表示的是“整体”原创 2017-03-11 10:17:15 · 1313 阅读 · 0 评论 -
结构体
结构体概念在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。 在C语言中,可以定义结构体类型,将多个相关的变量包装成为一个整体使用。在原创 2017-04-28 13:34:02 · 804 阅读 · 0 评论 -
C++指针
概念有时你申请一个变量(如int x;),计算机就会随机给你分配一个空间,你可以在那个空间内改变数值。就像计算机给了一个叫做a的小房子,但是只能在里面放int类型的值。比如你输入x=-1,计算机首先会把小房子找到,然后把-1放在里面。(如果里面有其他值,就拿出来) 那这个小房子的地方在哪里呢,就存放在地址里。每一个变量都有一个地址(即是它在内存中的位置)。所谓指针就是一个箭头→,指向一个地址,原创 2017-05-16 18:54:28 · 664 阅读 · 0 评论 -
KM算法
最佳匹配什么是完美匹配如果一个二分图,X部和Y部的顶点数相等,若存在一个匹配包含X部与Y部的所有顶点,则称为完美匹配。 换句话说:若二分图X部的每一个顶点都与Y中的一个顶点匹配,**并且**Y部中的每一个顶点也与X部中的一个顶点匹配,则该匹配为完美匹配。什么是完备匹配如果一个二分图,X部中的每一个顶点都与Y部中的一个顶点匹配,**或者**Y部中的每一个顶点也与X部中的一个顶点匹配,则该匹配为完备匹原创 2017-05-02 17:39:42 · 16211 阅读 · 1 评论 -
树型DP
概念树型DP即在树上进行DP。树是无环图,顺序可以是从叶子到根节点,也可以从根到叶子节点。一般树型DP的特征很明显,即状态可以表示为树中的节点,每个节点的状态可以由其子节点状态转移而来(从叶子到根的顺序),或是由其父亲节点转移而来(从根到叶节点的顺序),也可是两者结合。找出状态和状态转移方程仍然是树型DP的关键。例题没有上司的晚会题目描述Ural大学有N个职员,编号为1~N。他们有从属关系,也就是说原创 2017-04-27 13:32:48 · 872 阅读 · 0 评论 -
二分图匹配——匈牙利算法和KM算法
二分图的概念二分图又称作二部图,是图论中的一种特殊模型。 设G=(V, E)是一个无向图。如果顶点集V可分割为两个互不相交的子集X和Y,并且图中每条边连接的两个顶点一个在X中,另一个在Y中,则称图G为二分图。 二分图的性质定理:当且仅当无向图G的每一个回路的次数均是偶数时,G才是一个二分图。如果无回路,相当于任一回路的次数为0,故也视为二分图。二分图的判定如果一个图是连通的,可以用如下的方法判定原创 2017-04-14 20:41:54 · 48572 阅读 · 2 评论 -
栈stack
stack的概念栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 如上图,栈当中最先进去的最后出来。 这就是stack遵循原创 2017-04-28 14:00:22 · 844 阅读 · 0 评论 -
对拍
也许对大家来说,还不知道什么叫做对拍。其实对拍就是你有一个标准程序(或者暴力程序什么的,只要保证答案正确就行了)和一个答案错误的程序,在尝试很多次以后,肉眼debug不出来,也不知道哪里错了,错在哪一组数据。这时就不要在进行十分麻烦的手动测试,而是用对拍程序来找出错误的地方,及那组让你WA的数据。对拍,需要4个东西:你的错误程序,答案正确的程序,一个数据生成器,和一个对拍器。 WA程序和标程都呵呵原创 2017-03-21 18:05:10 · 758 阅读 · 0 评论 -
NOIP前必须记住的30句话(有补充)
1.比赛前一天晚上请准备好你的各种证件,事先查好去往考场的路线。2.比赛之前请先调整你的屏幕分辨率到你喜欢的大小。3.比赛之前请把编译器的字体调为你平时惯用的字体,尤其是注意这种字体中的逗号,点,1,l 这种易混淆的字是不是区分明显。4.在不影响视野的情况下,请将字号尽可能调大,方便查错. 压缩包或许还不能解压,但是文件名已经可以知道了,在选手目录下用代码模板建好所有文件,包 括.c/原创 2016-11-14 13:21:08 · 8793 阅读 · 1 评论 -
【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 · 933 阅读 · 1 评论 -
知识总结
一、编译工具由于考试上机时,编译的工具较少,所以我来科普一下编译器的使用方法。Dev-c++详情点击此博客:点击这里二、NOIP前必须记住的30句话详情点击此博客:点击这里三、复习提纲贪心概念贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略原创 2016-11-16 13:30:12 · 1665 阅读 · 1 评论 -
Dev-c++使用方法 Dev-c++怎么用
Dev-C++是一个可视化集成开发环境,可以用此软件实现C/C++程序的编辑、预处理/编译/链接、运行和调试。本手册中介绍了Dev-C++常用的一些基本操作,每一位同学都要掌握。一.启动Dev-C++方法一:1. 鼠标点击任务栏中的“开始”按钮,选“程序”菜单项,然后选“程序”下的子菜单项“Bloodshed Dev-C++”项,显示该项下的子菜单。2. 单击”Dev-C ++”菜转载 2016-11-16 13:42:06 · 207364 阅读 · 9 评论 -
伸展树的基本操作与应用 IOI2004 国家集训队论文 杨思雨
伸展树的基本操作与应用安徽省芜湖一中 杨思雨【关键字】伸展树 基本操作 应用【摘要】本文主要介绍了伸展树的基本操作以及其在解题中的应用。全文可以分为以下四个部分。第一部分引言,主要说明了二叉查找树在信息学竞赛中的重要地位,并且指出二叉查找树在某些情况下时间复杂度较高,进而引出了在时间复杂度上更为优秀的伸展树。第二部分介绍了伸展树的基本操作。并给出了对伸展树时间复杂度转载 2017-03-31 13:59:47 · 1684 阅读 · 0 评论