并查集定义并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)
初始化1234567//定义数组,记忆每个节点对应的父节点int fa[N];for (int i = 1; i <= N - 1; i++){ //初始时,每个节点的父节点就是自己本身 fa[i] = i;}
定义 find 函数,用于寻找某个节点的根节点(就是父节点的父节点的父。。。。。12345678910111213141516171819202122232425//非递归写法int find(int x){ while (fa[x] != x) { x = fa[x]; } return x;}//递归写法int find(int x){ if (fa[x] == x) return x; else { return find(fa[x]); }}//简化写法int find(int x){ return fa[x] == x ...
又一周结束啦,回想起来,这周倒也算抗住了,周一到周五正常学习算法,感觉时间超级快,一周基本都在搞数据结构,倒也充实,周五打了一场月赛,战绩还是 6ac3,第四题看出来是 dp 但很无力啊,还没开到 dp,希望回头再来补喽,然后第五题竟然是一道二分前缀和,我并没能写出来,考场上没能分析出来,一直感觉是我无法解决的问题。。。今天下午学校组织了第一次周赛,令人不解的是一共七题全部是构造,数学问题,似乎我能做到的地方并没有用到什么算法,这其实有点失望,不过好在运气不错,第二道的位运算构造似乎卡住很多同学,我也是因为上次刚好在 cf 上写了一道类似,记忆比较深刻,最后 ac3 道,赛后发现很多同学都是 ac3 道,只赢在罚时而已。。。第四第五也都开了,不过都 wa 了。接下来这周就开搜索和 dp 啦,下周二打一场 cf,周日天梯赛选拔,希望成绩能进步!不过接下来还有好多麻烦事,导员要开始严查课,每周六要和同学打羽毛球,还有考驾照,还有家教。。。思来想去,决定周六拿出来解决这些问题是,刚好上午驾照,下午羽毛球,晚上家教,管理大师!
优先队列 #include <queue>
代码 含义
q.push(ele) 元素ele入栈增加元素 (logN)
q.pop() 弹出队首元素 (logN)
q.top() q.top() == 队首元素
q.empty() 判断栈内是否为空,空为真
q.size() 返回栈内元素的个数
没有 clear!!!设置优先级1234567//默认大根堆,每次取出最大元素priority_queue<int> q;//小根堆,每次取出最小元素priority_queue<int, vector<int>, greater<int>> q;//less<int> 表示数字大的优先级大,堆顶为最大的元素//greater<int>表示数字小的优先级大,堆顶为最小的元素
pair代替二元结构体
12345678910111213141516171819//头文件#include <utility>//1.初始化定义pai ...
栈 代码 含义
s.push(ele) 元素ele入栈增加元素
s.pop() 弹出栈顶元素
s.top() s.top() == 栈顶元素
s.empty() 判断栈内是否为空,空为真
s.size() 返回栈内元素的个数
数组模拟栈的遍历12345678910// 栈 从左至右为栈底到栈顶int s[100];// p 代表栈顶指针,初始栈内无元素,p为-1int p = -1;for(int i = 0; i <= 11; ++i) { //入栈 s[++p] = i;}// 出栈int top_element = s[p--];
栈的应用题目大意:有 n 个人从左到右排成一队,全部人向右看,每个人会被比自己高的人挡住,求出每个人是被哪个位置的人挡到。如果没有被挡住就输出 0。
思考:因为向右看,所以最右一个人一定是输出 0,从右向左考虑,如果一个人 a,a 的左边人如果比 a 高,那么 a 就失去挡住别人的能力,如果左边人比 a 矮,那么两人都可能有挡住别人的能力。
代码模板 ...
这周是开学第一周,每天时间基本都花在了算法上,这一周算法学习了两章,博客发布了 7 篇原创,学习状态还不错,不过下一周就是天梯赛选拔,然后四月又有蓝桥杯,感觉进度还是很紧张,决定重头学习算法,导致搜索,图论,dp 这些到现在都还没开,打了一场牛客周赛,一场 cfdiv.3,成绩都很差。。。苦恼啊,希望下周进度可以好些,成绩涨涨涨!再有就是最近各种计算机细分方向开始成为同学们讨论的话题,各种眼花缭乱的技术相当吸引人,不过问题就是如何选择?几次动摇后,最终还是决定与其纠结,不如踏实做好现在手头的事,让子弹再飞会,别急,会变好的吧。。。现在是 2025.3.3 0:11 今天就是生日!期待一下明天开心一整天!订了两个大大的蛋糕,嘿嘿给同学们一个惊喜~~
本博文转载自 黑马程序员 的开源资料,只是为了方便自己学习,并非盗用他人成果!C++基础入门1 C++初识1.1 第一个 C++程序编写一个 C++程序总共分为 4 个步骤
创建项目
创建文件
编写代码
运行程序
1.1.1 创建项目 Visual Studio 是我们用来编写 C++程序的主要工具,我们先将它打开
1.1.2 创建文件右键源文件,选择添加->新建项
给 C++文件起个名称,然后点击添加即可。
1.1.3 编写代码1234567891011#include<iostream>using namespace std;int main() { cout << "Hello world" << endl; system("pause"); return 0;}
1.1.4 运行程序
1.2 注释作用:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码
两种格式
单行注释:// 描述信息
通常放在一行代码的上方,或者一条语句的末尾,= ...
本博文转载自 黑马程序员 的开源资料,只是为了方便自己学习,并非盗用他人成果!C++核心编程本阶段主要针对 C++==面向对象==编程技术做详细讲解,探讨 C++中的核心和精髓。
1 内存分区模型C++程序在执行时,将内存大方向划分为4 个区域
代码区:存放函数体的二进制代码,由操作系统进行管理的
全局区:存放全局变量和静态变量以及常量
栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等
堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收
内存四区意义:
不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程
1.1 程序运行前 在程序编译后,生成了 exe 可执行程序,未执行该程序前分为两个区域
代码区:
存放 CPU 执行的机器指令
代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可
代码区是只读的,使其只读的原因是防止程序意外地修改了它的指令
全局区:
全局变量和静态变量存放在此.
全局区还包含了常量区, 字符串常量和其他常量也存放在此.
...
本博文转载自 黑马程序员 的开源资料,只是为了方便自己学习,并非盗用他人成果!C++提高编程
本阶段主要针对 C++==泛型编程==和==STL==技术做详细讲解,探讨 C++更深层的使用
1 模板1.1 模板的概念模板就是建立通用的模具,大大提高复用性
例如生活中的模板
一寸照片模板:
PPT 模板:
模板的特点:
模板不可以直接使用,它只是一个框架
模板的通用并不是万能的
1.2 函数模板
C++另一种编程思想称为 ==泛型编程== ,主要利用的技术就是模板
C++提供两种模板机制:函数模板和类模板
1.2.1 函数模板语法函数模板作用:
建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。
语法:
12template<typename T>函数声明或定义
解释:
template — 声明创建模板
typename — 表面其后面的符号是一种数据类型,可以用 class 代替
T — 通用的数据类 ...
三分法用来解决单峰单谷问题,经典二次函数型的变化时,可以使用三分优化当问题是解决一堆都是整数的问题时,较为简单,模板代码如下:1234567891011121314151617181920#include <iostream>using namespace std;//下面就是要寻找的二次函数型数组,目标是找到其中的最大值int a[10] = { 0, 3, 25, 21, 20, 14, 12, 7, 2, 1 };int main(){ int z = 0, y = 9; while (z <= y) { //三分,就是将区间尽量平均分成三份 int mid1 = z + (y - z) / 3; int mid2 = y - (y - z) / 3; //判断两者中的较大值,那么较小值的一方的元素都不可能是最大值,直接舍去 if (a[mid1] >= a[mid2]) y = mid2 - 1; else z = mid1 + 1; } //最终结果位置与二分类似 cout < ...
2025.4.15 补充!!!这段时间按照下面操作仍无法使用解决方法,按照下面操作执行后运行页面后,页面右上角提示“脚本猫已关闭…”,点击管理扩展程序进入,将页面右上方开发者模式打开,并且将页面下方脚本猫的按钮也打开,然后关闭网页,重启软件即可恢复正常使用。
如果你要解决的软件不在下面这几个之中,请移步另一篇博文“自动刷题刷课”
必要说明1.网课脚本不要开倍速!有的会系统识别用时过短然后清理你的记录还要重新看!对于网课,脚本便利在于可以自动下集,也就是说可以开着挂一个晚上就刷好了。(当然有些水课没管就可以高倍速速通,可以自己试一下,一段时间后如果清零就老实不开倍速挂着)
2.题目练习脚本大多是依靠题库,而题库可能会出现有的题目没有,或者题库答案不准确,正确率无法保证!不同脚本正确率有的相差巨大,建议多试几个。
使用前务必看完“必要说明”
本脚本与我没有任何关系,只不过刚好找到它,并将它记录下来,方便身边同学使用一.确保电脑有谷歌浏览器(edge 不行!)如果没有,在下面链接下载一个谷歌:https://www.google.cn/intl/zh-CN/chrome/
二.在电脑下载脚本 ...