- 博客(28)
- 收藏
- 关注
原创 B树和B+树
1B树,即B-tree树,B是Balanced首字母,平衡的意思。因为B树的原英文名称为B-tree,很多人喜欢把B-tree译作B-树,然后读作B减树。其实,这么是不对的。容易让人会以为B树和B-树是两种树。特此声明:B-树就是指的B树。
2023-07-28 17:37:23 643
原创 二叉树的遍历方式及还原
先序遍历(Pre-order Traversal)、中序遍历(In-order Traversal)和后序遍历(Post-order Traversal)是二叉树遍历的三种基本方式。它们是一种用于遍历树结构的方法,通过不同的访问顺序可以得到不同的遍历结果。先序遍历(Pre-order Traversal):先序遍历是从根节点开始,先访问根节点,然后按照先序遍历的方式递归地访问左子树和右子树。先序遍历的访问顺序是根节点 -> 左子树 -> 右子树。
2023-07-28 15:30:00 333
原创 链表相关问题
该算法使用两个指针,一个快指针和一个慢指针,从链表的头部开始遍历链表,如果链表存在环,快指针最终会在环中追上慢指针。在快慢指针相遇时,慢指针走过的距离为 a + b,而快指针走过的距离为 a + b + n(c + b),其中 n 表示快指针绕环走的圈数。首先,通过快慢指针法找到环中的相遇节点,即快指针追上慢指针的节点。假设链表的头节点到环的入口节点的距离为 a,环的入口节点到相遇节点的距离为 b,相遇节点再绕环走到入口节点的距离为 c。进行循环遍历:在每次循环中,快指针向前移动两步,慢指针向前移动一步。
2023-07-27 14:49:49 40
原创 1.24学习
树的重心性质证明补充:性质1证明:当u是重心时其最大子树是size1+size+1>=size1+2而u向v再走一点的最大子树是(u边)size1+1(v边size1+size)my关于树状DP的感悟
2021-01-24 21:33:27 115
原创 考试排名
oj结构体题难点:如何输入有时会带有()的数据?想法:int输入法不行直接输入一行字符太麻烦正解:直接输入一串字符,数字部分字符转数字,其他部分分开处理误区:未AC的题错了没关系,不算入罚时...
2020-12-25 18:36:27 205
原创 【输入输出】【scanf】【知识】scanf
输入之scanf的摘要scanf要有&,printf没有%p是一个新的格式控制符,它表示以十六进制的形式(带小写的前缀)输出数据的地址。如果写作%P,那么十六进制的前缀也将变成大写形式。#include <stdio.h>int main(){ int a='F'; int b=12; int c=452; printf("&a=%p, &b=%p, &c=%p\n", &a, &b, &c);
2020-12-13 12:14:07 504
原创 【stl2】C【未完】
stl2C未完成的错误代码#include<iostream>#include<algorithm>#include<iomanip>#include<cstring>#include<string>#include<queue>#include<vector>using namespace std;struct node{ int id, time, num, ans; node(in
2020-12-12 11:20:45 99
原创 【数组初始化】【memset】【fill】【知识】【未完】
借鉴大神:未完区别fill 和 menset 两者看似相等,但fill是把那一块单元赋成指定的值,也就是说任何值都可以;而memset则是将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值memsetvoid *memset(void *s,int c,size_t n)例如:1.memset(dis,255,sizeof(dis));将前sizeof(dis)字节的空间赋值为==-1(255的补码是-1==,计算机用补码表示数字)2.memset(dis,0,size
2020-12-12 10:00:33 304
原创 【stl】【stl2】g【未完】
正确思想12错误思想代码#include<iostream>#include<algorithm>#include<string>#include<vector>#include<map>using namespace std;string s[11] = {"0", "1", "abc", "def", "ghi","jkl","mno","pqrs","tuv","wxyz"};string a[5010];int cn
2020-12-11 23:06:07 110
原创 【波波小课堂】【知识】
调用函数的说明void f(){}int main(){ f(x) };传数组(f(a[]))x是一个数组时,传入的其实是一个指针,如a,指向a[0];x是一个指针时,传入的效果和上面一样,如 &a[i];普通变量x是数组的一个变量,如a[i]...
2020-12-10 10:46:53 137
原创 【stl】【vector】【知识】
1. 基础操作1.1说明1.1.1赋值、比较大小vector可以定义时赋初值vec之间可以 赋值,比较大小(一个一个数比较)1.1.2存储方式每次空间不够了申请二倍的空间,把之间的所有元素复制到此处(o(n))1.1.3访问方式迭代器:可用begin(),end()访问vector也可用rbegin(),rend()反向访问vector引用:vector[2]也可同迭代器一样访问自动迭代器:vector::iteractor == auto:自动类型推导自动引用:for(au
2020-12-09 20:10:56 256
原创 【结构体】【知识】
自定义排序写法1——内联重载重载 < 运算符struct node { int year,month,day; bool operator < (const node &p) const { if (year == p.year && month == p.month) { return day < p.day; } if (year == p.year) { return year < p.year; } retu
2020-12-08 13:53:16 81
原创 二进制辅助枚举
二进制的应用题意: 找数列中能被11整除的子序列的个数#include <stdio.h>#include <cstring>#include <iostream>#include <string>using namespace std;int main(){ int n, a[20]; while(cin >> n) { long long cnt = 0; int ans
2020-12-07 21:49:29 89
原创 【std】【队列】知识【未完】
队列队列先进先出队列不可以用q[2]来访问,只能用迭代器和top()优先队列:priority_queue q;操作函数push o(logn)基础知识大根堆: 优先输出最大的数q.top()设置成小根堆:priority_queue<int, vector< int>, greator< int> > q;双端队列deque双端队列(效率较低)...
2020-12-07 21:45:30 270
原创 【动态规划】【模型】【contest1】F【复习】
题意consest1cf思路分析从左上到右下,i+j代表了它相对0+0要变成的数字故只需要明确路径上任意一点就可以知道其它点->第一想法:枚举起点/终点(因为他们一定在最终路径里面)->细想:无非是需要一个标准,使得它不变,其它的数都按照它的大小去改变->所有的数都是等差数列可以常数数列->更便于处理发现每一斜列的 目的数 是呈等差(十分有序)排列,即a1->1,a2->2,an->n,那可以处理成b1=a1-1=c,b2=a2-2=c,bn
2020-12-07 20:42:21 95
原创 【std】【队列】【优先队列】【树结构】【constest1】D- Constructing the Array
思想升华逐层访问树结构而非深度访问树结构题目contest1cf思路要求第i轮,找出最长0串(有两个选左边那个),将该串中间的0(怎么求中间是谁题目给了)赋值为i思路看起来像树结构:先访问父结点,然后访问它的左子节点后访问它的右子节点,再访问他们各自的儿子->但实际上不是,像只是因为每次操作后都诞生了两个平分的更小的子问题->但考虑到树是深度访问,必须一直访问左树到叶子才会回来访问右节点,故不是树->相反,该题其实类似于将树逐层访问(从最大的根层 到 第二层 到…
2020-12-06 21:15:14 175
原创 【动态规划】【模型】【contest1】E
思想升华:提示我们写转移方程时:我们要明确1.f的含义,2.f的基础转移状态+其他可能的转移状态题目contest1cf题解要求:(用灯的开关模拟)求使得n个灯,亮着的(1)必须相隔为i和i+k的关系 的 最小动开关的次数思路:多画几下就会发现,原序列被分成了k个子序列(如子序列1:1,1+k,1+2k…1+ck),要求只能有一个子序列有连续的1,其它的序列都为0难点:转移方程:难点一:要保证亮着的地方是连续的-> 要么只能从上一个亮着的地方过来/要么前面全部黑掉难点二:
2020-12-06 20:33:03 233
原创 【数学】【contest1】【c】矩阵所有数到中心点的距离和
题目std1cf解决思路:特别区分:可以向对角移动:离目标点的 “圈数” 即要走的步数不可像对角移动:离目标点的min{横坐标差,纵坐标}即要走的步数提醒:在分析出每部分的步数后,要把他汇总到整个矩阵中,看其分布情况有无特点——可局部找答案,但也要总体看如此题:2222221112210122111222222代码#include<iostream>using namespace std;int main(){ //freopen("C:\\Use
2020-12-06 16:03:30 308
原创 【输入输出】【知识】
freopen写法freopen(“C:\Users\bearb\Desktop\in.txt”,“r”,stdin);//freopen(“C:\Users\bearb\Desktop\out.txt”,“w”,stdout);电脑属性中的地址是C:\Users\bearb\Desktop\in.txt写在freopen中要是C:\Users\bearb\Desktop\in.txt3.头文件:stdio.h...
2020-12-05 21:37:35 91
原创 输入输出
cin.get()和cin.getline()和getline()的区别与联系:https://blog.csdn.net/qq_17753903/article/details/82258460cin.get(),cin.getlin()共同点:都到行尾cin.getline(数组,数组长度)getline只能对string用不能对char[]用getline会把_从输入流中删除,但并不会读入string中getline(cin, 数组名)getline(cin,数组名,停
2020-12-05 17:10:57 68
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人