基础
IOUIUY
这个作者很懒,什么都没留下…
展开
-
c++ bitset
使用bitset需要添加头文件bitset ,bitset是一种特殊的容器 ,bitset数组中 ,每个成员只装1bit位的数据 , 即只能是0 或 1。 bitset 的基本用法 : 初始化bitset容器 bitset<‘size’> 容器名;未初始化容器数据,会默认每位都是0 也可以给一个具体的初始化:存入int数据 bitset<‘size’> 容器名(‘num’); 会将num以二进制形式储存在bitset中,如果初始化的容器位数不够 ,会截取num二进制形式下的左边部原创 2021-08-22 22:57:29 · 432 阅读 · 0 评论 -
并查集
并查集:并查集是一种树型的数据结构,用于处理一些不相交集合(disjoint sets)的合并及查询问题。常常在使用中以森林来表示。 这是我百度的关于并查集的定义,在我看来并查集是把一些有关系的元素放到一个集合,这样我们就可以判断任意元素间的关系。 这样我们就可以先利用已知的关系创建并查集,然后判断元素间的关系。例如有的题就会给你一堆已知关系,a和b是亲戚,b和c是亲戚,d和f是亲戚…让你判断随意给出的两个人存不存在亲戚关系。 当关系网比较庞大时我们人为比较难判断,用并查集就很好解决。 创建并查集我们需原创 2021-04-26 15:50:00 · 548 阅读 · 0 评论 -
最小生成树(克鲁斯卡尔算法 普里姆算法)
最小生成树是处理图结构中,简化图的算法;即删除一些边使得图得以简化,形成树结构,但应保证图中任意点都是相连通的。形成的最小生成树应该使得从顶点遍历时走过边的权值和最小。(有n个节点,则最小生成树的边数应为n-1) 如: 变为最小生成树后: 处理最小生成树有两种方法: 1.克鲁斯卡尔算法(kruskal): 这种算法是先把所有的边拿出来,按其权值从小到大的顺序排列,然后从最小的边开始还原图,即按该边连接其顶点。从权值值最小的边依次连接,每次连接都要判断本次连接是否形成了环,若是,则改变没有必要还原,当还原原创 2021-04-24 11:39:20 · 22646 阅读 · 4 评论 -
合法括号
由1对括号,可以组成一种合法括号序列:() 由2对括号,可以组成两种合法括号序列:()() 、(()) 由4对括号组成的合法括号序列一共有多少种? 输入括号对数 输出能组成的合法括号数 #include<iostream> int sum=0;//统计方案数 void DFS(int n,int l)//待处理n为符号数,l为未匹配的左括号 { if(n==0) { if(l==0) sum++; } else if(l<0)原创 2021-04-17 10:38:33 · 198 阅读 · 0 评论 -
&、|、~、、^、<<、>>运算符
这四种运算符都是在2进制的情况下进行的 如10的二进制为00001010(八位) 1的二进制为00000001 1、按位与(&):10&1的结果就是两个二进制数相同位进行按位与,即有0则结果为0,都是1则结果为1 00001010 00000001=00000000 可用来判断一个数的奇偶,如11的二进制数按位与1的二进制数 00001011&00000001=00000001 代码为 if (num &1 ) num为奇则为真,为偶则为假 2、按位或(|):按位或与按位与原创 2021-04-10 15:32:29 · 1252 阅读 · 0 评论