自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 收藏
  • 关注

原创 AcWing 844. 走迷宫

【代码】AcWing 844. 走迷宫。

2022-10-10 17:05:00 325

原创 【题解】费解的开关

文章目录题干参考代码 题干 你玩过“拉灯”游戏吗? 25 盏灯排成一个 5×5 的方形。 每一个灯都有一个开关,游戏者可以改变它的状态。 每一步,游戏者可以改变某一个灯的状态。 游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。 我们用数字 1 表示一盏开着的灯,用数字 0 表示关着的灯。 下面这种状态 10111 01101 10111 10000 11011 在改变了最左上角的灯的状态后将变成: 01111 11101 10111 10000 11011 再改变它正中间

2022-03-31 23:06:20 479 19

原创 【蓝桥真题/C++ B组】带分数

题目来自: **第四届蓝桥杯省赛C++B组 ** #include <iostream> #include <cstring> #include <algorithm> const int N = 20; int n; int cnt; bool book[N] , re[N]; using namespace std; bool check(int a, int c ) { long long b = n * c - a * c; if

2022-03-20 11:54:55 1707 28

原创 【算法常用STL】-> priority_queue

优先队列 Heap priority_queue<int, vector<int>, less<int>>s;//less表示按照递减(从大到小)的顺序插入元素 priority_queue<int, vector<int>, greater<int>>s;//greater表示按照递增(从小到大)的顺序插入元素 不写第三个参数或者写成less都是大根堆。greater是小根堆。 在C++中优先队列默认的是大根堆,如果用小根堆则加入

2022-03-11 16:35:54 8211 10

原创 Codeforces Round #776 (Div. 3) A+B+C

文章目录A. Deletions of Two Adjacent Letters题干思路参考代码B. DIV + MOD(数学 + 构造)题干思路参考代码 A. Deletions of Two Adjacent Letters 题干 给定字符串 s,字符串长度为奇数。 该字符串由拉丁字母的小写字母组成。 只要字符串长度大于1,就可以对其进行如下操作:选择字符串s中任意两个相邻的字母,从字符串中删除。 例如,从字符串“lemma”在一次操作中,您可以得到以下四个字符串中的任何一个:“mma”、“lma”、

2022-03-09 21:10:20 690 10

原创 【C++】 <atoi><stoi><to_string> 转换类函数 《解析 + 例题》

文章目录1. stoi()作用返回值2. atoi()作用返回值3. to_string作用返回值 1. stoi() stoi()的参数是const string 作用 将字符串转换为整数 解析 传入的字符串(string)将其内容解析为指定基数的整数,该基数作为 int 值返回。 返回值 成功时,函数将转换后的整数作为 int 值返回。 Ps: 如果 str 中的第一个非空白字符序列不是有效整数,或者由于 str 为空或仅包含空白字符而不存在此类序列,则不执行转换并返回零。 2. atoi(

2022-03-07 22:17:29 1284 18

原创 蓝桥杯必看 【手撕模板】三分钟搞懂 <堆排序>

文章目录实现堆(数组)例题1. 递归法1为根节点0 为根节点2. 迭代法1为根节点0为根节点 堆是一个满二叉树,根据其性质我们就可以知道堆是连续存储的(在数组中),但是日常做算法题的时候自己写链式存储是比较麻烦的,所以最近重点学习一下数组实现堆 实现堆(数组) 例题 输入一个长度为 n 的整数数列,从小到大输出前 m 小的数。 输入格式 第一行包含整数 n 和 m。 第二行包含 n 个整数,表示整数数列。 输出格式 共一行,包含 m 个整数,表示整数数列中前 m 小的数。 数据范围 1≤m≤n≤105, 1

2022-03-05 14:16:47 1302 8

原创 蓝桥杯必看 【手撕模板】三分钟搞懂 <并查集>

并查集可以使我们用将近O(1)的时间 去查询两个元素是否属于一个集合

2022-02-22 11:51:15 767 10

原创 蓝桥杯必看 【手撕模板】三分钟搞懂 <Trie树(字典树)>

#include<iostream> const int N = 1e6 + 10; using namespace std; int son[N][26],book[N],cur;(1) int n ; char str[N],ch; void insert(char str[]) { int p = 0;(2) for(int i = 0 ; str[i] ;i ++)//遍历整个数组 { int u = str[i] - 'a';(3) .

2022-02-20 23:48:41 8344 4

原创 蓝桥杯必看 【手撕模板】三分钟搞懂 <KMP算法>

前言 在学习kmp算法之前 我们需要知道 kmp 算法是用来干什么用的 KMP算法是一种字符串匹配算法,可以在 O(n+m)的时间复杂度内实现两个字符串的匹配。 所谓字符串匹配,是这样一种问题:“字符串 P 是否为字符串 S 的子串?如果是,它出现在 S 的哪些位置?” 其中 S 称为主串;P称为模式串。 #include<iostream> const int N = 1000010; using namespace std; int m,n; char s[N],p[N]; i

2022-02-19 22:38:18 976 8

原创 【STL】重载函数(ing)

文章目录1. 结构体重载 在日常排序中 我们通常需要写 cmp + sort 来进行对结构体 等的排序 但是如果使用< >重载 也可以达到同样的效果 1. 结构体重载 struct three { int x; double y; string z; //重载 < 号 main 中可以直接调用sort函数进行排序 bool operator < (const three & t) const { re

2022-02-16 10:50:12 703 2

原创 蓝桥杯必看 【手撕模板】三分钟搞懂 <数字排序问题 + STL>

例题一、排列 方法一、(常规)暴力搜索 利用 递归搜索树 求解 #include<iostream> using namespace std; const int N = 10; int n ; bool st[N]={0};//储存状态 int nums[N]={0};//储存数据 void dfs(int cnt) { if(cnt > n) { for(int i = 1 ;i <= n; i ++ ) cout <&l

2022-02-15 23:04:47 1787 6

原创 【STL】next_permutation(解决组合数/排列)

1. 定义 返回值= next_permutation(begin,end) 2. 功能 按照字典序 求 123 的 下一个排列 1 3 2 3. 返回值 如果已经是最大序列 就返回 false 如果不是最大序列 返回 true

2022-02-15 22:49:48 398

原创 【算法常用STL】-> set

1. setset <set>主要包括set(元素不能重复)和multiset(可以包含若干个相等的元素),分别叫做 “有序集合”和“有序多重集合”。set 和 multiset 的内部实现是一棵红黑树,它们支持的函数基本相同。 set<int> s; struct rec{…}; set<rec> s; // 结构体rec中必须重载定义小于号 multiset<double> s; Ps: 结构体rec中必须重载定义小于号 2. 遍历set 的方式

2022-02-15 21:54:13 733 9

原创 【算法常用STL】 ->map

文章目录1. map的声明2. []操作符3. map.find()4. insert() / erase ()5. size() / empty() / clear() / begin() / end() 1. map的声明 map 是一个由 key val 构成的二元组 map<key_type, value_type> name //例如: map<long, long, bool> vis; map<string, int> hash; map<pai

2022-02-14 22:17:28 687

原创 【算法常用STL】vector

文章目录1. vector的定义2. begin() 和 end()3. front 和 back4. 如何遍历vector ?5. push_back()和pop_back()6.empty() 和 size() 1. vector的定义 vector是一种变长数组*(扩容时倍增),支持随机访问,不支持在任意位置 O(1)。为了保证效率,元素的增删一般应该在末尾进行。 #include<vector> #include <vector> // 头文件 vector<int

2022-02-14 00:14:50 460 7

原创 【算法常用STL】 pair

1. pair 1.1 声明 pair 是一个二元组(可以是任意类型) pair<int,string> a; a = {180,"GuLeng"}; a.make_pair= {180,"GuLeng"};//C++99 版本需要使用这个 1.2 表示形式 pair中运用x.first 、x.second等表示二元组中的元素 pair<int,string> a;二元组的对应关系分别是 int -> a.first string -> a.second 1.

2022-02-13 23:40:54 319

原创 【算法常用STL】bitset()

基本用法 #include<bitset> bitset<100>a,b;//100表示二进制串的长度 a[0]=1; a[1]= 1; a.set()/a.reset() a.count() a.

2022-02-13 22:47:00 318

原创 【算法常用STL】 专题目录(ing)

文章目录bitset bitset

2022-02-13 21:51:54 317

原创 【浅谈数据结构】二叉树的遍历

文章目录二叉树的遍历例题1. 前序遍历及源码 二叉树的遍历 遍历是我们学习二叉树中比较重要的一环,也是我们在二叉树上进行其他操作的基础 按照规则,二叉树的遍历有:前序/中序/后序的递归结构遍历: 前序遍历(Preorder)——访问根结点的操作发生在遍历其左右子树之前。 可以理解为 前序遍历的遍历顺序是 : 根-> 左 -> 右(以此类推) 中序遍历(Inorder )——访问根结点的操作发生在遍历其左右子树之间 遍历顺序是:左-> 根 -> 右 后序遍历(Postorder

2022-02-10 21:35:41 1060 9

原创 【浅谈数据结构】堆(满二叉树)基本概念及函数实现(附源码)

文章目录1. 堆的概念1.1 定义1.2 特性1.3 堆的种类1.4 常用场景2.堆函数 源码实现1. HeapInit2. HeapDestroy3. HeapPush4. HeapPop5. HeapEmpty6.AdjustUp7. AdjustDown8. HeapSize9. HeapTop10. HeapPrint实现细节 1. 堆的概念 1.1 定义 如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki

2022-02-06 20:37:57 896 14

原创 【浅谈数据结构】树、二叉树基本概念

文章目录初识二叉树1)树的概念及结构1.1 树的定义1.2 树的相关概念1.3 树的表示(左孩子右兄弟表示法)2)二叉树概念及结构2.1 概念:度最大为二的树2.2 二叉树的不同状态2.3 满二叉树2.4 完全二叉树2.5 二叉树的性质 初识二叉树 1)树的概念及结构 定义: 任何一棵树都会被分为 根和子树(或者是空树) Ps:树型结构中,子集之间不可以有任何交集 , 否则就不是树形结构 1.1 树的定义 (图来源于百度百科树(数据结构名词)_百度百科 (baidu.com)) 1.2 树的相关概

2022-02-04 11:45:00 711 2

原创 【浅谈数据结构】队列的基本函数与操作

文章目录1、定义及基本运算定义:说明:注意:2、队列的基本运算(0)、队列的定义(1)、QueueInit(Q)(2)、QueueEmpty(Q)(3)、 QueueFull(Q)(4)、EnQueue(Q,x)(5)、 DeQueue(Q)(6)、QueueFront(Q)一、顺序队列(1)、顺序队列的定义(2)、 顺序队列的表示(3)、 顺序队列的基本操作注意:二、循环队列 1、定义及基本运算 定义: 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表 说明:   (1)、允

2022-01-28 19:46:54 2755 13

原创 【浅谈数据结构】栈的基本函数与操作

文章目录栈1.栈的定义2.栈的实现方式2.1线性栈 vs 链表栈 的优缺点2. 顺序栈栈(线性栈)2.1子函数含义 以及 实现1. 线性栈的结构类型2. InitStack3. StackEmpty4. StackFull5. Push6. StackPop7. StackTop8. StackDestroy2、顺序栈的基本操作 栈 栈是一种特殊的线性表,它们的逻辑结构和线性表相同,但是运算规则相比线性表有更多的限制,故又称它们为 运算受限 的线性表。 1.栈的定义 栈(Stack)是只能在一段(栈

2022-01-24 22:18:30 3197 14

原创 蓝桥杯必看 【手撕模板】三分钟带你上手算法模板(例题 + 套路总结) --> 差分

前言(必看) 本系列 暂无详细的 公式推导以及证明, 适合有一定知识基础的同学 目的是 通过分析例题、了解、总结套路 来达到举一反三 触类旁通的效果 文章目录前言(必看)1、差分使用场景以及核心思想2.1 一维差分主要思路例题例题源码模板+套路2.2 二维差分思路例题例题源码模板+套路 1、差分使用场景以及核心思想 给出 n 个数,再给出 m 个询问,每个询问给出 l,r,x,要求你在 l 到 r 上每一个值都加上 x,而只给你 O(n) 的时间范围,怎么办? 如果暴力,时间复杂度就是

2022-01-14 20:02:04 6739 17

原创 【多解LeetCode】 142.环形链表 II

142.环形链表 II /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode * judgecircle(struct ListNode *head) { if(head == NULL) return 0; struct ListNode * fast ,* slow

2022-01-13 22:53:47 157 3

原创 C算法模板->大数除法

#include<iostream> #include<vector> #include<algorithm> using namespace std; vector<int> divi (vector<int> &A,int b,int &r) { vector<int> C; for(int i=A.size() -1 ; i>=0 ;i--) //除法是从高位开始算的

2022-01-09 20:15:14 507 14

原创 C算法模板->大数乘法

文章目录源码实现细节 源码 #include<iostream> #include<vector> const int N = 1e6+10; int q[N]; int n; using namespace std; vector<int> mul(vector <int> &A,int b) { vector<int> C; int t=0; for(int i = 0; i < A.size() ||

2022-01-09 12:52:42 498 14

原创 C算法模板->二维前缀和

文章目录前言例题与模板 前言 对于二维前缀和主要有两个公式 理解这两个公式之后就可以套公式即可 //1. 求s[i][j]的公式 s[i][j] = s[i - 1][j] + s[i][j - 1] -s[i - 1][j - 1] + a[i][j]; //2. 求一点 A(x1,y1与 B(x2,y2) 这个字矩阵的和 Sab = s[x2][y2] -s[x1 - 1] [y2] - s[x2][y1 - 1] +s[x1 - 1][y1 - 1] 例题与模板 #include<ios

2022-01-08 22:00:01 561 8

原创 C算法模板->大数减法

#include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <map> using namespace std; bool cmp(vector<int>& A, vector<int>& B) //判断是否A >= B { if (A.size() != B.size())

2022-01-08 18:55:01 282 5

原创 C算法模板->线性前缀和

#include<iostream> #include<vector> using namespace std; const int N = 1e5+10; int S[N],a[N]; int main() { int n,m; int r,l; cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; //(1) for(int i=1.

2022-01-07 22:46:06 265 10

原创 C算法模板->大数加法

#include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <map> using namespace std; const int N = 1e5+10; int n; int q[N]; vector<int>add(vector<int> &A,vector<int> &B)

2022-01-07 12:51:53 330 5

原创 算法模板目录(ing)

文章目录1.排序专区点击这里->归并排序点击这里->快速排序点击这里->快速选择 1.排序专区 点击这里->归并排序 点击这里->快速排序 点击这里->快速选择

2022-01-06 22:26:03 567 17

原创 C 算法模板->快速排序

快排 #include<iostream> using namespace std; const int N = 1e6+100; int q[N]; void quick_sort(int q[],int l,int r) { if(l >= r) return ; int val = q[(l+r)>>1]; int i = l-1,j = r+1; while(i < j) {

2022-01-06 22:24:10 181 6

原创 C算法模板->快速选择算法

#include <iostream> using namespace std; const int N = 1000010; int q[N]; int quick_sort( int l, int r, int k) { if (l >= r) return q[l]; int i = l - 1, j = r + 1, x = q[l + r >> 1]; while (i < j) { do i ++ ;

2022-01-01 13:12:31 570 8

原创 C 算法模板-->归并排序

并归排序模板 以及一些易错点

2021-12-31 23:04:37 369 14

原创 【多解LeetCode】|876. 链表的中间结点

文章目录1.两次遍历(一般思路 )2.一次遍历(快慢指针) 1.两次遍历(一般思路 ) 题目给定的很简单,如果不考虑时空复杂度的话可以遍历依次找到节点数N,然后遍历找到mid节点的位置返回即可(mid=N/2) 比较简单,代码略 2.一次遍历(快慢指针) 快慢指针是双指针中比较经典的一个题型 主要的核心点就在于对于迭代条件的判断 struct ListNode* middleNode(struct ListNode* head) { struct ListNode* fast=head;

2021-12-30 00:23:20 333 5

原创 跨年无聊?不如来和嘉然学链表

这篇文章主要是初步解释链表中的各种函数 文章目录1.CreateNode2.SListFind3.SListPrint4.SListInsert==5.SListErase==6.SListPushFront7.SListPushBack8.SListPopBack9.SListPopfront10.SListDestory 1.CreateNode 作用:创建一个值为 x 的新节点,然后搭配其他函数使用 PS: 注意返回类型为结构体指针 要使用动态开辟空间 2.SListFind ..

2021-12-28 17:47:11 1106 21

原创 浅谈 《数据结构》-->三分钟实现顺序表

文章目录???? 前言1.顺序表的定义 ???? 前言 寒假要开始《算法与数据结构》的学习 数据结构系列就先从最简单的顺序表入手吧 1.顺序表的定义 定义: 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串等 而顺序表就是最简单的线性表 通俗来讲,顺序表可以理解为数组,因为它在内存中是连续存储、并且数据类型是相同的,但在数组的基础上,还需要从头开始存储,不能跳跃间隔。 ...

2021-12-25 23:23:13 504 1

原创 C++|类和对象的引用

简单上手C++的缺省、重载等关键概念

2021-12-23 20:56:53 1462 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除