自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 笔试强训week4

小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,他将会依次遇见n个怪物,每个怪物的防御力为b1,b2,b3...bn. 如果遇到的怪物防御力bi小于等于小易的当前能力值c,那么他就能轻松打败怪物,并 且使得自己的能力值增加bi;给出n个字符串,从第1个字符串一直到第n个字符串每个串取一个字母来构成一个新字符串,新字符串的第i个字母只能从第i行的字符串中选出,这样就得到了一个新的长度为n的字符串,请问这个字符串是否有可能为回文字符串?

2024-05-10 15:49:35 872 1

原创 笔试强训week3

dd当上了宣传委员,开始组织迎新晚会,已知班里有nnn个同学,每个同学有且仅有一个擅长的声部,把同学们分成恰好mmm组,为了不搞砸节目,每一组里的同学都必须擅长同一个声部,当然,不同组同学擅长同一个声部的情况是可以出现的,毕竟一个声部也可以分成好几个part进行表演,但是他不希望出现任何一组的人过多,否则可能会导致场地分配不协调,也就是说,她希望。若图的拓扑序不唯一,输出任意合法的拓扑序即可。子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组。

2024-05-03 21:22:26 747 1

原创 C++ 标准库类型map&set

Compare: 比较器的类型,map中的元素是按照key来比较的,缺省情况下按照小于来比 较,一般情况下(内置类型元素)该参数不需要传递,如果无法比较时(自定义类型),需要用户自己显式传递比较规则(一般情况下按照函数指针或者仿函数来传递)(2)Key-Value 模型 ,如: ①统计文件中每个单词出现的次数,统计结果是每个单词都有与其对应的次数:< 单词,单词出现的次数 > ②梁山好汉的江湖绰号:每个好汉都有自己的江湖绰号。使用平衡搜索树(即红黑树)作为其底层,容器中的元素是一个有序的序列。

2024-04-28 13:57:58 537

原创 笔试强训week2

同时在棋盘上的任一点有一个对方的马(如上图的 C𝐶 点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。棋盘用坐标表示,𝐴 点的坐标为 (0,0)、𝐵 点的坐标为 (𝑛,𝑚) ,马的位置 𝐶 点的坐标为 (𝑋,𝑌)(约定: 𝐶≠𝐴,同时 𝐶≠𝐵)。假设你有一个数组prices,长度为n,其中prices[i]是某只股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益。正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。

2024-04-25 17:10:57 906

原创 C++ 多态

多态概念:对于同一个行为对于不同的对象,有不同的表现。

2024-04-25 14:49:37 894

原创 C++ 继承

(在子类成员函数中,可以。

2024-04-20 17:22:57 1033 1

原创 C++ 面向对象

让某种类型对象获得另⼀个类型对象的属性和方法。

2024-04-20 13:56:20 948

原创 笔试强训week1

每次喊到 m-1 的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0... m-1报数....这样下去....直到剩下最后一个小朋友,可以不用表演,并且拿到牛客礼品,请你试着想下,哪个小朋友会得到这份礼品呢?比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现 了6次。,a[n],求最小的区间[l,r],使a[l]+a[l+1]+

2024-04-18 17:51:37 1009

原创 C++ 迭代器

要访问顺序容器和关联容器中的元素,需要通过“迭代器(iterator)”进行。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。

2024-04-14 14:12:10 296

原创 C++ STL

C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。

2024-04-10 20:58:50 274

原创 C++ 标准库类型priority_queue

Type就是数据类型,Container就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional就是比较的方式。当需要用自定义的数据类型时才需要传入这三个参数,使用基本数据类型时,只需要传入数据类型,默认是大堆。//升序队列,小顶堆//降序队列,大顶堆//greater和less是std实现的两个仿函数。

2024-04-10 20:19:18 423

原创 贪心算法

贪心算法(greedy algorithm)一个贪心算法总是做出当前最好的选择,也就是说,它期望通过局部最优选择从而得到全局最优的解决方案。---贪心算法(greedy algorithm)是一种解决优化问题的算法,其基本思想是在问题的每个决策阶段,都选择当前看起来最优的选择,即贪心地做出局部最优的决策,以期获得全局最优解。

2024-04-06 18:08:43 3328 1

原创 动态规划问题

第i种物品最多有n[i]件可用,每件体积是v[i],价值是w[i]。给定一个数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子 将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。给定两个长度分别为 N 和 M 的字符串 A 和 B,求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。

2024-04-06 15:07:07 784

原创 C++ 标准库类型stack&queue

【代码】C++ 标准库类型stack&queue。

2024-04-05 13:01:15 373

原创 C++ 标准库类型List

创建一个没有任何元素的空 list 容器:创建一个包含 n 个元素的 list 容器://创建lt容器,其中包含10个元素,每个元素的值都为相应类型的默认值(int类型的默认值为0)创建一个包含 n 个元素的 list 容器,并为每个元素指定初始值://创建了一个包含10个元素并且值都为5个lt容器。在已有 list 容器的情况下,通过拷贝该容器可以创建新的 list 容器://注意:采用此方式,必须保证新旧容器存储的元素类型一致。

2024-04-01 13:47:52 1203

原创 C++ 标准库类型vector

vector():创建一个空vector//创建一个空vectorvector(int nSize):创建一个vector,元素个数为nSize//创建10个元素的vectorvector(int nSize,const t& t):创建一个vector,元素个数为nSize,且值均为t//创建10个元素的vector,并初始化.vector(const vector&):复制构造函数//复制构造函数。

2024-03-30 13:21:31 617

原创 容斥原理、简单博弈论

所谓采取最优策略是指,若在某一局面下存在某种行动,使得行动后对面面临必败局面,则优先采取该行动。在有向图游戏中,对于每个节点x,设从x出发共有k条有向边,分别到达节点y1, y2, …定义有向图游戏G,它的行动规则是任选某个有向图游戏Gi,并在Gi上行动一步。NIM博弈属于公平组合游戏,但城建的棋类游戏,比如围棋,就不是公平组合游戏。具体方法是,把每个局面看成图中的一个节点,并且从每个局面向沿着合法行动能够到达的下一个局面连有向边。有向图游戏的某个局面必胜,当且仅当该局面对应节点的SG函数值大于0。

2024-03-28 20:09:33 886

原创 高斯消元、组合计数

2. 通过 C(a, b) = a!/ (a - b)!这个公式求出每个质因子的次数。中p的次数是 n / p + n / p^2 + n / p^3 + ...给定n个0和n个1,它们按照某种顺序排成长度为2n的序列,满足任意前缀中0的个数都不少于1的个数的序列的数量为: Cat(n) = C(2n, n) / (n + 1)首先预处理出所有阶乘取模的余数fact[N],以及所有阶乘取模的逆元infact[N]如果取模的数是质数,可以用费马小定理求逆元。1. 筛法求出范围内的所有质数。

2024-03-28 15:40:36 449

原创 欧拉函数、快速幂、扩展欧几里得算法、中国剩余定理

欧拉函数(Euler's totient function)是一个与正整数n相关的数论函数,通常用。求 m^k mod p,时间复杂度 O(logk)。

2024-03-27 20:55:17 253

原创 质数、约数

约数之和: (p1^0 + p1^1 + ... + p1^c1) * ... * (pk^0 + pk^1 + ... + pk^ck)约数个数: (c1 + 1) * (c2 + 1) * ... * (ck + 1)在大于1的整数中,如果只包含1和本身这两个约数,就被称为质数,或者叫素数。欧几里得算法,也称为辗转相除法,是一种求最大公约数(GCD)的有效算法。如果 N = p1^c1 * p2^c2 * ... *pk^ck。的倍数都被正确地标记为合数,且不会有重复的工作。

2024-03-27 18:59:16 309

原创 二分图

不要轻易放弃,最后悔的不是做错,而是错过。

2024-03-25 17:00:03 876

原创 最小生成树

生成树是原图的极小连通子图,包含图中所有的顶点,并且有保持图连通的最少的边。在这个定义中,“最小”是指树的所有边的权值之和最小。按照边的权重顺序(从小到大)选择边,确保选择的边不会与已经选择的边形成环,直到形成最小生成树。在一个加权无向连通图中,包含图中全部顶点的、权值之和最小的生成树。从图中的某一顶点开始,逐步增加新的边和顶点,直到形成最小生成树。859. Kruskal算法求最小生成树 - AcWing题库。858. Prim算法求最小生成树 - AcWing题库。: O(n^2+m), 用于稠密图。

2024-03-25 16:21:17 302

原创 最短路算法

(通俗的来讲就是:假设 1 号点到 n 号点是可达的,每一个点同时向指向的方向出发,更新相邻的点的最短距离,通过循环 n-1 次操作,若图中不存在负环,则 1 号点一定会到达 n 号点,若图中存在负环,则在 n-1 次松弛后一定还会更新)其原理为连续进行松弛,在每次松弛时把每条边都更新一下,若在 n-1 次松弛后还能更新,则说明图中有负环,因此无法得出结果,否则就完成。:如果每个抽屉代表一个集合,每一个苹果就可以代表一个元素,假如有n+1个元素放到n个集合中去,其中必定有一个集合里至少有两个元素。

2024-03-23 16:57:55 971

原创 拓扑排序

(DAG,Directed Acyclic Graph)的一种排序算法。在这种图中,从一个顶点出发,顺着有向边的关系,可以到达其他的顶点,但是图中不存在环,即不能回到出发点的路径。对于无向图中的边ab,存储两条有向边a->b, b->a。(1) 邻接矩阵:g[a][b] 存储边a->b。树是一种特殊的图,与图的存储方式相同。因此我们可以只考虑有向图的存储。

2024-03-23 15:34:30 295

原创 DFS与BFS

843. n-皇后问题 - AcWing题库。844. 走迷宫 - AcWing题库。

2024-03-21 19:39:07 429

原创 哈希表

哈希表又称散列表,一种以「key-value」形式存储数据的数据结构。所谓以「key-value」形式存储数据,是指任意的键值 key 都唯一对应到内存中的某个位置。只需要输入查找的键值,就可以快速地找到其对应的 value。可以把哈希表理解为一种高级的数组,这种数组的下标可以是很大的整数,浮点数,字符串甚至结构体。

2024-03-20 19:40:00 803

原创 并查集

在大多数操作中,特别是经过路径压缩优化后,查找(Find)和合并(Union)操作的时间复杂度可以达到接近常数时间O(1) 或O(logn)。并查集是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵树表示一个集合,树中的节点表示对应集合中的元素。:由于每个节点都需要维护一个指向父节点的指针,所以并查集的空间复杂度较高,为O(n)。

2024-03-17 15:25:37 358

原创 字典树 [Tire]

Trie 树是一种多叉树的结构,它的特点是所有的字符都存储在树的分支上,并且从根节点到某个叶节点的路径上的字符组成了一个字符串。1455. 检查单词是否为句中其他单词的前缀 - 力扣(LeetCode)字典树,英文名 trie。顾名思义,就是一个像字典一样的树。

2024-03-17 14:55:42 355

原创 KMP-字符串查找算法

问题:假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢?即2层循环,太过复杂。

2024-03-15 18:29:07 1114 4

原创 双指针算法,位运算,离散化,区间合并

通过建立新索引,来缩小目标区间,使得可以进行一系列连续数组可以进行的操作比如二分,前缀和等…(2) 对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作。在二进制补码表示下把数字同时向右移动,高位以符号补充,低位越界舍弃。在二进制补码表示下把数字同时向右移动,高位以0补充,低位越界舍弃。在二进制表示下把数字同时向左移动,高位越界舍弃,低位补0。二进制表示下只要有一位为 则为 ,否则为0。二进制表示下两位同时为 则为 ,否则为0。二进制表示下相应位不同则为 ,否则为0。

2024-03-12 15:23:42 861 3

原创 前缀和&差分

前缀和可以用于快速计算一个序列的区间和,也有很多问题里不是直接用前缀和,但是借用了前缀和的思想。给区间[l, r]中的每个数加上c:B[l] += c, B[r + 1] -= c。差分是前缀和的逆运算(a是b的差分,则b是a的前缀和),

2024-03-09 21:54:32 429 6

原创 C++ 标准库类型string

string (1)复制赋值操作符C字符串赋值操作符单个字符赋值操作符初始化列表赋值操作符move (5)移动赋值操作符/*复制赋值操作符 (Copy Assignment Operator): 复制赋值操作符 = 用于将另一个string对象的内容复制到当前对象中。如果可能的话,它应该删除当前对象中已有的内容,并分配新的内存来存储复制的数据。*/// 删除当前字符串的内容// 分配新的内存并复制内容。

2024-03-08 20:32:16 929 4

原创 C++模板

泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。模板分为函数模板和类模板。

2024-03-02 12:20:26 376 4

原创 C++类&对象

C语言典型的面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是典型的基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。类声明放在.h文件中,成员函数定义放在.cpp文件中注意:成员函数名前需要加类名: :成员变量命名规则(推荐):在成员变量前加对于日期类对象,我们可能会忘记调用Init函数进行初始化,C++为了解决这个问题,引入构造函数进行初始化。int _month;

2024-02-27 21:58:39 819 4

原创 C++入门

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。// 命名空间中可以定义变量/函数/类型int val;一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中//命名空间还可嵌套使用int a;int b;int c;int d;在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。您不能仅通过返回类型的不同来重载函数。

2024-01-26 21:36:57 430 2

原创 Linux常见指令&基础知识

新的操作系统是受到另一个UNIX的小操作系统——Minix的启发,该系统是由一名叫Andrew S Tanenbaum的教师开发的。Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。Fedora是一款非常好的发行版,有庞大的用户论坛,软件库中还有为数不少的软件包。“@”表示符号链接;毫无疑问,Kali Linux是一款渗透测试工具,或者是文明黑客(我不想谈论恶意黑客)青睐的操作系统。

2023-11-26 15:30:49 991 5

原创 二叉树&堆

数据结构、算法总述:数据结构/基础算法 C/C++_禊月初三的博客-CSDN博客树(tree) 是n(n≥0)个节点的有限集。当n=0时,称为空树。在任意一个非空树中, 有如下特点:· 有且仅有一个特定的节点称为根节点· 除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1

2023-11-20 20:27:43 115 5

原创 栈与队列

只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出。:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。:栈的插入操作叫做进栈/压栈/入栈,:进行插入操作的一端称为队尾。:进行删除操作的一端称为队头。栈中的数据元素遵守后进先出。:栈的删除操作叫做出栈。

2023-11-14 17:08:31 97 8

原创 线性表(顺序表与链表)

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。1.无须为表中元素之间的逻辑关系而增加额外的存储空间。2.当线性表长度变化较大时,难以确定存储空间的容量。线性表(List):零个或多个数据元素的有限序列。826. 单链表 - AcWing题库。827. 双链表 - AcWing题库。2.可以快速地存取表中任意位置的元素。

2023-11-07 20:14:53 111 5

原创 二分

本质:找到一个性质将数据步骤:红色部分:mid=(l+r+1)/2 (防止l与r仅相差1)绿色部分:mid=(l+r)/2题目789. 数的范围 - AcWing题库。

2023-10-31 19:40:03 76 2

空空如也

空空如也

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

TA关注的人

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