摘要:
P4305 [JLOI2011]不重复数字题解:可以使用Hash的思想,主要有两方面,一、hash函数,二、冲突处理,这里hash函数除余法,冲突一种是线性探测,另一种是开地址法 /* 简单的hash思想 */ #include<bits/stdc++.h> using namespace std;
阅读全文
posted @ 2022-03-04 20:40
心悟&&星际
阅读(65)
推荐(0)
摘要:
P4305 [JLOI2011]不重复数字题解判重,判断之前是否出现过该数,60%的数据在[0,104]所以这个数据可以使用桶的思想进行判重,100%数据在32位整数,且个数在5*104,且有50组,可以尝试set判重。 #include<bits/stdc++.h> using namespace
阅读全文
posted @ 2022-03-04 20:14
心悟&&星际
阅读(54)
推荐(0)
摘要:
P1059 [NOIP2006 普及组] 明明的随机数 题解排序+去重,由于值域范围在[1,1000],且个数100个内,故可以使用桶排序的思想一次完成上述两个任务。 #include<bits/stdc++.h> using namespace std; int T[1001]; int main
阅读全文
posted @ 2022-03-04 20:00
心悟&&星际
阅读(159)
推荐(0)
摘要:
树上倍增求LCA先跑一遍dfs,知道每个结点的父结点是谁,记录在root[x][0],“x”是当前结点,“root[x][0]”是x结点向上一步得到的点(也称为父结点)。我们可以维护出来每个结点向上2k步会走到哪个结点。如果已经超出树的范围令root[x][k]=0预处理一下LOG()inline
阅读全文
posted @ 2022-03-04 14:49
心悟&&星际
阅读(32)
推荐(0)
摘要:
在离散数学中,等价关系是指定义在集合A上的关系,满足自反的、对称的和传递的等性质。设R是定义在集合A上的等价关系,与A中一个元素a有关系的所有元素的集合叫做a的等价类。等价类应用十分广泛,如在编程语言中,我们使用等价类来判定标识符是不是表示同一个事物。在离散数学中,等价关系是指定义在集合A上的关系,
阅读全文
posted @ 2022-03-04 14:44
心悟&&星际
阅读(1030)
推荐(0)
摘要:
P1102 A-B 数对 #include<map> #include<iostream> #include<vector> using namespace std; map<int,int> m; vector <int> ma; long long ans=0; int main() { int
阅读全文
posted @ 2022-03-04 08:51
心悟&&星际
阅读(269)
推荐(0)
摘要:
P2249 【深基13.例1】查找#include<cstdio>using namespace std;int a[1000009];int lb(int a[],int l,int r,int key){ int ans=-1; int mid; while(l<=r) { mid=((r-l)
阅读全文
posted @ 2022-03-04 08:48
心悟&&星际
阅读(58)
推荐(0)
摘要:
C++STL提供几个二分查找的方法。 lower_bound() (1)原型template< class ForwardIt, class T >ForwardIt lower_bound( ForwardIt first, ForwardIt last, const T& value );返回第
阅读全文
posted @ 2022-03-04 07:16
心悟&&星际
阅读(188)
推荐(0)
摘要:
二分查找算法问题一、在一个有序的序列(不降序列)中查找指定值的算法,查找成功返回它所在的位置,否则返回-1int binarySearch(int a[],int l,int r,int x){ int ans=-1; while(l<=r) { int m=l+(r-l)/2; if (a[m]=
阅读全文
posted @ 2022-03-04 07:08
心悟&&星际
阅读(43)
推荐(0)
摘要:
堆(heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:堆中某个结点的值总是不大于或不小于其父结点的值;堆总是一棵完全二叉树。将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。堆是非线性数据
阅读全文
posted @ 2022-03-03 22:18
心悟&&星际
阅读(882)
推荐(0)
摘要:
学习前提:数据结构与算法中的堆 对make_heap(), pop_heap(), push_heap()的用法做个总结: make_heap()生成堆,他有两个参数,也可以有三个参数,前两个参数是指向开始元素的迭代器和指向结束元素的下一个元素的迭代器。第三个参数是可选的,可以用伪函数less()和
阅读全文
posted @ 2022-03-03 21:57
心悟&&星际
阅读(83)
推荐(0)
摘要:
P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G这是一道贪心算法的题目,每次选择两个最小的堆,合并后,继续直到只有一堆为止,可能用优先队列进行维护。 #include<bits/stdc++.h>using namespace std;i
阅读全文
posted @ 2022-03-03 16:28
心悟&&星际
阅读(93)
推荐(0)
摘要:
P1177 【模板】快速排序 #include<bits/stdc++.h>using namespace std;int main(){ priority_queue<int,vector<int>,greater<int> > q; int n; cin>>n; for (int i=1;i<=
阅读全文
posted @ 2022-03-03 14:23
心悟&&星际
阅读(36)
推荐(0)
摘要:
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择。算法思路贪心算法一般按如下步骤进行: ①建立数学模型来描述问题。②把求解的问题分成若干
阅读全文
posted @ 2022-03-03 12:28
心悟&&星际
阅读(237)
推荐(0)
摘要:
普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。首先要包含头文件#include<queue>, 他和queue不同的就
阅读全文
posted @ 2022-03-03 12:22
心悟&&星际
阅读(91)
推荐(0)
摘要:
【题目描述】如果二叉树的左右子树的结构是对称的,即两棵子树皆为空,或者皆不空,则称该二叉树是对称的。编程判断给定的二叉树是否对称.例:如下图中的二叉树T1是对称的,T2是不对称的。 二叉树用顺序结构给出,若读到#则为空,二叉树T1=ABCDE,T2=ABCD#E,如果二叉树是对称的,输出“Yes”,
阅读全文
posted @ 2022-03-03 09:34
心悟&&星际
阅读(217)
推荐(0)
摘要:
已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点。例:如图二叉树的数据文件的数据格式如下: 输入 第一行n为二叉树的结点个树,n<=100;第二行x表示要查找的结点的值;以下第一列数据是各结点的值,第二列数据是左儿子结点编号,第三列数据是右儿子结点编号。输出 一个数即
阅读全文
posted @ 2022-03-03 08:09
心悟&&星际
阅读(173)
推荐(0)
摘要:
二叉树输出(btout)【问题描述】树的凹入表示法主要用于树的屏幕或打印输出,其表示的基本思想是兄弟间等长,一个结点要不小于其子结点的长度。二叉树也可以这样表示,假设叶结点的长度为1,一个非叶结点的长并等于它的左右子树的长度之和。一棵二叉树的一个结点用一个字母表示(无重复),输出时从根结点开始:每行
阅读全文
posted @ 2022-03-03 00:45
心悟&&星际
阅读(419)
推荐(0)
摘要:
1. STL有6种序列容器类型(1)vector它提供对元素的随即访问,在尾部添加和删除元素的时间是固定的,在头部或中部插入和删除元素的复杂度为线性时间。(2)deque在<deque>文件中声明。是双端队列,支持随即访问。从deque的开始与末尾位置插入和删除元素的时间是固定的。尽管vector和
阅读全文
posted @ 2022-03-02 14:56
心悟&&星际
阅读(773)
推荐(0)
摘要:
运算符与 &或 |非 ~异或^左移(<<)在二进制表示下把数字同时向左移,低位以0填充,高位越界后舍弃。1<<n=2n,n<<1=2n算术右移在二进制表示下把数字同时向右移,高位以符号位填充,低位越界后舍弃。算术右移等于除以2向下取整。逻辑右移在二进制表示下把数字同时向右移,高位以0位填充,低位越界
阅读全文
posted @ 2022-03-02 14:25
心悟&&星际
阅读(58)
推荐(0)
摘要:
P1177 【模板】快速排序由于map可以按关键值排序,且每个关键值可以有对应值表示该关键值的个数,所以可以完成这道题 #include<bits/stdc++.h>using namespace std;int main(){ map<int,int> s; int n; cin>>n; for
阅读全文
posted @ 2022-03-02 08:58
心悟&&星际
阅读(38)
推荐(0)
摘要:
P1177 【模板】快速排序 由于multiset能自动对关键值进行排序,所以multiset可以进行排序功能且支持相同关键值 #include<bits/stdc++.h>using namespace std;int main(){ multiset<int> s; int n; cin>>n;
阅读全文
posted @ 2022-03-02 08:45
心悟&&星际
阅读(45)
推荐(0)
摘要:
FBI树(fbi)【问题描述】我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。FBI树是一种二叉树[ 二叉树:二叉树是结点的有限集合,这个集合或为空集,或由一个根结点和两棵不相交的二叉树组成。这两棵不相交的二叉树分别称为这个
阅读全文
posted @ 2022-03-02 05:10
心悟&&星际
阅读(224)
推荐(0)
摘要:
二叉树遍历(flist)【问题描述】树和二叉树基本上都有先序、中序、后序、按层遍历等遍历顺序,给定中序和其它一种遍历的序列就可以确定一棵二叉树的结构。假定一棵二叉树一个结点用一个字符描述,现在给出中序和按层遍历的字符串,求该树的先序遍历字符串。【输入格式】输入文件flist.in共两行,每行是由字母
阅读全文
posted @ 2022-03-01 22:22
心悟&&星际
阅读(266)
推荐(0)
摘要:
小球(DROP)【问题描述】 许多的小球一个一个的从一棵满二叉树上掉下来组成FBT(Full Binary Tree,满二叉树),每一时间,一个正在下降的球第一个访问的是非叶子节点。然后继续下降时,或者走右子树,或者走左子树,直到访问到叶子节点。决定球运动方向的是每个节点的布尔值。最初,所有的节点都
阅读全文
posted @ 2022-03-01 22:14
心悟&&星际
阅读(121)
推荐(0)
摘要:
二叉树(binary tree,简写成BT)是一种特殊的树型结构,它的度数为2的树。即二叉树的每个结点最多有两个子结点。每个结点的子结点分别称为左孩子、右孩子,它的两棵子树分别称为左子树、右子树。二叉树有5中基本形态: 前面引入的树的术语也基本适用于二叉树,但二叉树与树也有很多不同,如:首先二叉树的
阅读全文
posted @ 2022-03-01 17:06
心悟&&星际
阅读(625)
推荐(0)
摘要:
树是一种非线性的数据结构,用它能很好地描述有分支和层次特性的数据集合。树型结构在现实世界中广泛存在,如社会组织机构的组织关系图就可以用树型结构来表示。树在计算机领域中也有广泛应用,如在编译系统中,用树表示源程序的语法结构。在数据库系统中,树型结构是数据库层次模型的基础,也是各种索引和目录的主要组织形
阅读全文
posted @ 2022-03-01 16:42
心悟&&星际
阅读(126)
推荐(0)
摘要:
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为
阅读全文
posted @ 2022-03-01 16:27
心悟&&星际
阅读(170)
推荐(0)
摘要:
栈:栈是限定仅在一端进行插入或删除操作的线性表,该端称为栈顶,另一端称为栈底。不含元素的表称为空栈。栈的修改是按照后进先出的原则进行的,因此,栈又称为后进先出(last in first out)的线性表,简称LIFO结构入栈:插入元素的操作为入栈出栈:删除栈顶元素的操作为出栈栈的表示:和线性表类似
阅读全文
posted @ 2022-03-01 16:20
心悟&&星际
阅读(224)
推荐(0)
摘要:
#include<vector> #include<iostream> #include<algorithm> using namespace std; vector <int> a; vector <int>::iterator ita; int main() { int q,n,x; cin>>
阅读全文
posted @ 2022-03-01 09:03
心悟&&星际
阅读(34)
推荐(0)
摘要:
#include<bits/stdc++.h> using namespace std; const int Maxn=500010; long long a[Maxn]; int n; int lowbit(int x) { return x&(-x); } long long query(int
阅读全文
posted @ 2022-03-01 08:32
心悟&&星际
阅读(31)
推荐(0)
摘要:
#include<iostream> using namespace std; const int Maxn=500010; int N,M; int a[Maxn]; int lowbit(int x) { return x&(-x); } void update(int x,int v) { w
阅读全文
posted @ 2022-03-01 08:31
心悟&&星际
阅读(25)
推荐(0)
摘要:
前言树状数组,又称二叉索引树,是一种代码简单,应用广泛的神奇数据结构!普通树状数组概念普及:树状数组的原理 设黑色框内数组为A[1]→A[8]那么可以得到以下式子:C[1] = A[1];C[2] = A[1] + A[2];;C[3] = A[3];C[4] = A[1] + A[2] + A[3
阅读全文
posted @ 2022-03-01 07:19
心悟&&星际
阅读(57)
推荐(0)
摘要:
#include<iostream>using namespace std;struct node{ int data;//结点的内容 int left;//左子树 int right;//右子树 int size;//子树大小,含本结点 int cnt; //相同内容的个数 } Bst[10010
阅读全文
posted @ 2022-02-28 22:44
心悟&&星际
阅读(46)
推荐(0)
摘要:
二叉搜索树的定义(性质):二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于(等于)它的根节点的值;(2)若右子树不空,则右子树上所有结点的值均大于(等于)它的根结点的值;(3)左、右子树也分别为二叉搜索树;例如:int a [] = {5,3,4
阅读全文
posted @ 2022-02-28 22:05
心悟&&星际
阅读(207)
推荐(0)
摘要:
map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡
阅读全文
posted @ 2022-02-28 21:31
心悟&&星际
阅读(165)
推荐(0)
摘要:
c++ stl集合(Set)是一种包含已排序对象的关联容器。set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素。2) 不提供直接存取元素的任何操作
阅读全文
posted @ 2022-02-28 21:16
心悟&&星际
阅读(82)
推荐(0)
摘要:
向量(vector):是一个顺序容器(Sequence Container),它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组(元素个数可变)。vector的插入和删除不支持在任意位置O(1)插入,所以为了保证vector的效率,一般增删在末尾进行; 头文件#inclu
阅读全文
posted @ 2022-02-28 21:07
心悟&&星际
阅读(62)
推荐(0)
摘要:
归并排序,分治的典型应用,归并排序的实现有两种方法1.自上而下的递归2.自下而上的迭代 算法思想:1.申请空间,使其大小为两个已排序序列之和,该空间用来合并后的序列。2.设两个指针,最初位置分别在两个排序序列的起始位置。3.比较两个指针所指向的元素,选择相对小的元素放入合并空间,并移动到下一个位置。
阅读全文
posted @ 2022-02-28 18:45
心悟&&星际
阅读(56)
推荐(0)
摘要:
算法思想:1.从一个新数列中挑选一个元素称为“基准”pivot。2.重新排序数列所有元素。比基准值小的摆放在基准元素之前,所有比基准值大的元素摆放在基准之后(相同的数可以摆放到任意一边)。在这个分区退出之后,该基准元素处于数列的中间位置。这个操作叫分区(partition)操作。3.递归地(recu
阅读全文
posted @ 2022-02-28 18:20
心悟&&星际
阅读(33)
推荐(0)