- 博客(67)
- 收藏
- 关注
原创 RMQ算法
设f[i, j]表示从a[i]到a[i + 2^j - 1]这个范围内的最大值,也就是以a[i]为起点连续2^j个数的最大值。两个区间的元素个数都为2x,所以[li, ri]的最大值为max(f[li][x], f[ri – 2^x + 1][x]),可以在O(1)内计算出来。f[i][j] = max(f[i][j - 1], f[i + 2^(j-1)][j - 1]),边界条件为f[i][0] = a[i],这样就可以在O(nlogn)的时间复杂度内预处理f数组。
2025-12-20 09:49:01
372
原创 二分答案
那么猜最大的最小值就要往小的猜,猜最小的最大值就要往大的猜,并随时验证猜的答案是否合理,如果合理就继续。二分的效率是非常高的,因为每猜一次就可以排除掉一半的数,哪怕是1e9使用二分之后循环次数就减少到1e4~1e5之间,而题目一般不会出到1e18,所以做题用二分99%不会爆炸。思路:我们可以定义一个左端点(L)和右端点(R),因为不知道要猜多少次,所以用while循环,在循环中不停地判断,满足条件(即中间数合理)则继续往上猜,直到猜中为止。就像猜数字一样,要尽快猜出一个数,就要每次猜它的一半。
2025-12-20 09:48:06
370
原创 图论基础概念
ek vk,若每条边ei的两端点是vi-1 和vi ,那么称该序列是从v0到vk的一条通路。对于一张不带权的无向图来说,从s到t的最短路径就是所有从s到t的通路中长度最短的那一条(可能不唯一),通路上的边数称为路径的长度。对图的每个顶点建立一个单链表(n个顶点建立n个单链表),第i个单链表中的结点包含顶点Vi的所有邻接顶点。很多图上的信息只通过点与边的集合是很难获得的,通过对图的遍历我们可以获取图上的信息。在图的边给出相关的数,成为权。若一张无向图的任意两个结点之间都存在通路,那么称该图是连通的。
2025-11-08 08:47:23
515
原创 单调队列知识点
在进行 队尾插入 的时候,我们往往需要明白一个重要的点,就是需要保证它 单调递减 的性质,所以如果 队尾元素 <=插入元素 ,则当前的 队尾元素 是需要执行删除操作的(也就是上文提到的 队尾删除),直到满足 队尾元素 > 插入元素,才能真正执行 插入 操作。为了让单调队列的数据足够干净,在单调队列中,一般存储 原序列的下标 即可,而不需要存储原序列的值,根据保序性,存储的下标一定是单调递增的;单调队列中的元素是 原序列的下标,对应到原序列时,根据求解问题的不同,当需要求最大值时,它是单调递减的;
2025-10-07 10:27:41
1023
原创 单调栈知识点
在处理序列时,当遇到一个元素时,如果该元素比栈顶元素大,就可以将栈顶元素出栈,直到栈为空或者栈顶元素大于等于当前元素。栈中元素从栈底到栈顶递减。在处理序列时,当遇到一个元素时,如果该元素比栈顶元素小,就可以将栈顶元素出栈,直到栈为空或者栈顶元素小于等于当前元素。这样,栈中的元素就是在当前元素之前且比当前元素大的元素。1)如果当前元素比栈顶元素大(或小,取决于是递增栈还是递减栈),则持续将栈顶元素出栈,直到栈为空或者栈顶元素满足某种条件(例如比当前元素大或小)。进栈元素分别为3,4,2,6,4,5,2,3。
2025-10-07 10:24:08
326
原创 2023大湾区GoC甲组决赛试题(含题解)
雪糕是限量发售的,每人限购一个,每个10元。小凯的摊位前排满了等候购买的市民,粗心的小凯出门时忘记了带找零的钱,如果轮到的顾客没有零钱找零,就只好去其他摊位买;10元,20元,50元,100元四种币种金额分别是以大小是140*70,颜色为1号、 2 号、5号、 10号色的实心长方形表示,长方形的中心位置用pen.text(数值,0,40)命令标注金额。然后用长度为120,粗细为3的红色线(1号)表示分针,长度为150粗细为1的蓝色线(2号)表示秒针,绘制了龙舟终点冲线的时间,上图表示的时间是2分17秒。
2025-09-20 08:49:11
1160
原创 区间dp
状态转移: 在內层循环中,根据题意更新 dpi,jdpi,j: dpi,jdpi,j = max/min(dpi,jdpi,j, dpi,k+dpk+1,j+cost(i,j,k)dpi,k+dpk+1,j+cost(i,j,k)) (其中 cost(i,j,k)cost(i,j,k) 通常是将左右两个区间合并时产生的代价或收益)内层循环:枚举分割点 k,范围在 [i,j−1][i,j−1] 之间,将区间 [i,j][i,j] 分割为 [i,k][i,k] 和 [k+1,j][k+1,j]。
2025-09-20 08:44:16
696
原创 记忆化搜索
根据记忆化搜索的思想,它是解决重复计算,而不是重复生成,也就是说,这些搜索必须是在搜索扩展路径的过程中分步计算的题目,也就是“搜索答案与路径相关”的题目,而不能是搜索一个路径之后才能进行计算的题目,必须要分步计算,并且搜索过程中,一个搜索结果必须可以建立在同类型问题的结果上,也就是类似于动态规划解决的那种。再回到上面的问题,因为之前肯定走过了(2,3),对应的f[2][3]为6,当尝试从(2,4)出发时,会发现周围已经走过了,只需要更新当前的值+1即可,就避免了重复计算。而从13开始会更优,长度为5。
2025-09-13 10:11:52
570
原创 BFS算法:寻找芒果销售商之路
宽度优先搜索算法的核心思想是:从初始结点开始,应用规则生成第一层结点,检查目标结点是否在这些后继结点中,若没有,再用产生式规则将所有第一层的结点逐一扩展,得到第二层结点,并逐一检查第二层结点中是否包含目标结点……(3)如果目标结点的深度与“费用”(如路径长度)成正比,那么,找到的第一个解即为费用最小的解,这时,搜索速度比深度搜索要快些。对于搜索树而言,宽度优先搜索的思路可以描述为:依次访问根结点的每一个子结点(第二层结点),再通过这些结点访问第三层结点。,Vt相邻接的所有未曾访问过的结点。
2025-07-21 18:50:40
272
原创 C++字符串处理:高效操作与常见陷阱
在 C++ 中,字符串的处理主要有两种方式:。:修改字符串时,原有迭代器可能失效。:频繁拼接字符串时,可用。:避免使用非法索引(如。(非' '和 /n )
2025-05-10 11:07:55
170
原创 树与二叉树:从定义到遍历全解析 C++
一棵树是由n(n>0)个元素组成的有限集合,其中:(1)每个元素称为结点(node)(2)有一个特定的结点,称为根结点或树根(root)(3)除根结点外,其余结点能分成m(m>=0)个互不相交的有限集合T0,T1,T2…… Tm-1。其中的每个子集又都是一棵树,这些集合称为这颗树的子树。
2025-05-10 11:05:18
839
原创 ASCLL码(T^T
ASCII码是C++字符处理的核心基础,涉及输入输出、字符串操作及底层数据转换。掌握其原理及转换方法,可提升代码效率和可维护性。在C++中,字符以单字节存储,直接对应ASCII码值。爹:那让我看看ASCLL码总表呗!字符-----》ASCLL码。字符《-----ASCLL码。的ASCII码为65,
2025-05-10 11:01:50
627
原创 知识点,一次看到爽
所谓计算机网络,就是利用通信线路和设备,把分布在不同地理位置上的多台计算机连接起来。计算机网络是现代通信技术与计算机技术相结合的产物。网络中的计算机与计算机之间的通信依靠协议进行。协议是计算机收、发数据的规则。TCP/IP:用于网络的一组通信协议。包括IP(Internet Protocol)和TCP(Transmission Control Protocol)因特网(Internet)是一个建立在网络互联基础上的最大的、开放的网球性网络。
2025-05-10 10:55:25
1235
原创 PVP鼠标推荐(deepseek)
下面有不懂的自行百度查找👍 ❤️以下是几款在和:预算有限但需要稳定双击性能的玩家。:¥100-200:长期高强度使用后可能出现微动老化(可自行更换微动解决)。:中小手型,追求轻量化与高响应速度的玩家。:¥200-300:光学微动手感偏硬,可能需要适应。:追求自定义微动手感的高端玩家。:¥500-600:微动可更换设计大幅延长鼠标寿命。:FPS/Minecraft 玩家,注重轻量化与灵活性。:¥400-500:微动寿命一般,需定期维护。:需要稳定 DBC/DC 的中大手玩家。:¥200-300。
2025-05-08 17:19:24
2828
原创 介绍一下MC的PVP(deepseek),生存玩家可以试试
我的世界》(Minecraft)PVP(玩家对战)是游戏中最具竞技性的玩法之一,玩家通过技巧、策略和装备搭配进行对抗。网易版(中国版)由于网络优化好、无需加速器,适合国内玩家。掌握PVP需大量练习,建议从Duels模式开始熟悉连击和走位,再挑战生存PVP或团队战!网易版PVP服务器更新较快,建议多尝试不同玩法找到最适合自己的!
2025-05-08 17:18:41
2749
原创 位运算介绍
1,3,5,9这些2^i+1的数字。类型(在个人计算机中,int一般为32位),但为了便于将算法以图形表示,下面一般使用8位的二进制数来展示,而不是使用32位,否则位数太多,图形过小,不利于绘制和阅读。因为15=0000 1111(⼆进制),右移⼆位,最⾼位由符号位填充将得到0000 0011即3。在C++中表示二进制数一般使用0x前缀表示的十六进制形式,和二进制数有一一对应的关系,如0x5A,表示二进制数 01011010。~A = 1100 0011(非,取反,即0变1,1变0)
2025-05-05 11:18:43
798
原创 位运算的应用
假设原来的数是a,对a取反加1得到~a+1,原数a和~a+1进行位与操作,就得到了lowbit值,即lowbit(a) = a & (~a + 1)。不⽤x%2 == 1,因为如果x为负奇数,x%2=-1。如果X减去1后(低⼀位并且⼆进制的每⼀位都是1),这个数与X做与运算,答案若是0,则X是2的N次⽅。因为取反加1就是一个数的相反数的补码,因为lowbit也写作 lowbit(a)=a&(-a)即 a-(a&-a)也可以由a&(a-1)得到。当这个数是0,没有最低位1的时候,结果为0。
2025-05-05 09:52:41
671
原创 树和二叉树
依旧以上图为例: (1):1->2->4->6->7,7 无左孩子,也无右孩子,输出 7,此时 6 无左孩子,而 6 的右子树也全部输出,输出 6,此时 4 无左子树,而 4 的右子树全部输出,输出 4,此时 2 的左子树全部输出,且 2 无右子树,输出 2,此时 1 的左子树全部输出,接着转向右子树;(3):7 的左孩子为空,输出 7,右孩子也为空,此时 2 的左子树全部输出,输出 2,2 的右孩子为空,此时 1 的左子树全部输出,输出 1,接着 1 的右孩子;例如,结点1的度为3,结点3的度为0。
2025-05-05 08:18:53
552
原创 位运算介绍
1,3,5,9这些2^i+1的数字。类型(在个人计算机中,int一般为32位),但为了便于将算法以图形表示,下面一般使用8位的二进制数来展示,而不是使用32位,否则位数太多,图形过小,不利于绘制和阅读。因为15=0000 1111(⼆进制),右移⼆位,最⾼位由符号位填充将得到0000 0011即3。在C++中表示二进制数一般使用0x前缀表示的十六进制形式,和二进制数有一一对应的关系,如0x5A,表示二进制数 01011010。~A = 1100 0011(非,取反,即0变1,1变0)
2025-05-05 08:15:14
802
原创 简易版2D我的世界C++程序(有点BUG,但是可以玩!!!)
1、按空格键来切换模式(挖掘模式和放置模式),2、按数字1和2键来切换放置的方块(1是草,2是木),树叶不能放置!!!3、树木生成时可能有点BUG。4、在操作时,请见谅。5、地图默认大小为20*20,可以自己修改。(第15行和第16行) 6、
2025-04-26 10:41:02
551
原创 进制转换编程实现
十进制长整数转换为十六进制的程序,输入:一个长整数,输出:十六进制数。编写一个十进制长整数转换为二进制的程序。编写一个二进制转换为十进制的程序。
2025-04-26 10:36:07
258
原创 神舟二十号载人飞船发射取得圆满成功 中国载人航天开启第20次神舟问天之旅
4月24日,搭载神舟二十号载人飞船的长征二号F遥二十运载火箭在酒泉卫星发射中心发射(拼版照片)。4月24日,搭载神舟二十号载人飞船的长征二号F遥二十运载火箭在酒泉卫星发射中心发射。4月24日,搭载神舟二十号载人飞船的长征二号F遥二十运载火箭在酒泉卫星发射中心发射。4月24日,搭载神舟二十号载人飞船的长征二号F遥二十运载火箭在酒泉卫星发射中心发射。4月24日,搭载神舟二十号载人飞船的长征二号F遥二十运载火箭在酒泉卫星发射中心发射。新华社记者 连振 摄。新华社记者 贝赫 摄。新华社记者 连振 摄。
2025-04-25 14:14:58
322
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
2