自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 蓝桥杯C/C++ 第十三届A组 灭鼠游戏 找规律法+暴搜法

所以此题可以理解为问两人都先在第一行放 小乔有没有必定使小蓝在第二行先手的策略第一局:小乔只需在中间放一个 即第一行变为xoxo 即可逼迫小蓝与其单个单个放 一轮过后 小蓝第二行先手第一局:小乔只需直接在第一行放两个填满第一行即可第三局:小乔需要在相邻两个处放一个 即oxxo 此时与第一局相同 小蓝必定与其拼子 之后第二行先手第四局:小乔只能直接拼子 最后先手第二行所以小乔只有第四局会输 即LLLV。

2025-03-28 17:35:31 310

原创 HBU算法设计与分析第六章

【代码】HBU算法设计与分析第六章。

2024-12-24 15:54:11 188

原创 蓝桥杯重新排序(最简单易懂版本:前缀和+差分+贪心)

题目:给定一个数组 A 和一些查询 Li,Ri,求数组中第 Li 至第 Ri 个元素之和。小蓝觉得这个问题很无聊,于是他想重新排列一下数组,使得最终每个查询结果的和尽可能地大。小蓝想知道相比原数组,所有查询结果的总和最多可以增加多少?输入格式输入第一行包含一个整数 n。第二行包含 n 个整数 A1,A2,⋅⋅⋅,An,相邻两个整数之间用一个空格分隔。第三行包含一个整数 m 表示查询的数目。接下来 m 行,每行包含两个整数 Li、Ri,相邻两个整数之间用一个空格分隔。输出格式。

2024-12-07 00:20:01 331

原创 蓝桥杯2113扫雷(三种方法+最详解版本)

玩家可以发射 m 个排雷火 箭, 小明已经规划好了每个排雷火箭的发射方向, 第 j 个排雷火箭 (xj,yj,rj)表 示这个排雷火箭将会在 (xj,yj)处爆炸, 它的爆炸范围是以半径为 rj 的一个圆, 在其爆炸范围内的炸雷会被引爆。其中有一个关卡的任务如下, 在一个二维平面上放置着 n 个炸雷, 第 ii 个炸雷 (xi,yi,ri) 表示在坐标 (xi,yi) 处 存在一个炸雷, 它的爆炸范围是以半径为 ri 的一个圆。接下来的 n 行, 每行三个整数 xi,yi,ri 表示一个炸雷的信息。

2024-12-07 00:10:10 2164 1

原创 蓝桥杯2117砍竹子(简单易懂 包看包会版)

问题描述这天, 小明在砍竹子, 他面前有 n 棵竹子排成一排, 一开始第 i 棵竹子的 高度为 hi​.他觉得一棵一棵砍太慢了, 决定使用魔法来砍竹子。魔法可以对连续的一 段相同高度的竹子使用, 假设这一段竹子的高度为 HH, 那么用一次魔法可以 把这一段竹子的高度都变为 ⌊⌊H2⌋+1⌋, 其中 ⌊x⌋ 表示对 x 向下取整。小明想 知道他最少使用多少次魔法可让所有的竹子的高度都变为 1。

2024-12-06 01:06:12 850

原创 蓝桥杯2110 积木画(最形象版本 简单易懂)

同时, 小明有一块面积大小为 2×N 的画布, 画布由 2×N个 1×1 区域构 成。小明需要用以上两种积木将画布拼满, 他想知道总共有多少种不同的方式?积木可以任意旋转, 且画布的方向固定。输出一个整数表示答案。由于答案可能很大,所以输出其对 1000000007 取模后的值。属于线性DP 由于此题行数就少 DP数组的第二维度只有三种情况 所以直接线性DP即可。对于所有测试用例,1≤N≤10000000.输入一个整数 N,表示画布大小。这里主要讲解三个状态转移方程。

2024-12-06 00:19:37 966

原创 HBU算法设计第五章(回溯)

【代码】HBU算法设计第五章(回溯)

2024-12-03 14:43:23 608

原创 P1019 [NOIP2000 提高组] 单词接龙

而DFS的函数思想也很容易想到 因为要**考虑如何从一个节点转移到另一个节点 所以自然是要考虑连接处** 所以在这里的DFS的参数就为正在连接的长字符串和当前最后拼接的字符串的下标(这在涉及图论的DFS题目中很常见)函数内部也很简单 注意一次不能使用两次的要求的更新和回溯 遍历字符串 看是否可以连接 如果可以就深入递归搜索下一层即可。输入的第一行为一个单独的整数 nn 表示单词数,以下 n 行每行有一个单词,输入的最后一行为一个单个字符,表示“龙”开头的字母。只需输出以此字母开头的最长的“龙”的长度。

2024-11-27 14:43:28 431

原创 LeetCode 135.分发糖果

n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。1请你给每个孩子分发糖果,计算并返回需要准备的。5你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。4你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。

2024-11-24 23:24:00 407

原创 HBU算法设计与分析 贪心算法

【代码】HBU算法设计与分析 贪心算法。

2024-11-22 15:56:47 534 1

原创 HBU算法设计与分析 第三章(第二次)

【代码】HBU算法设计与分析 第三章(第二次)

2024-11-18 23:34:10 238 1

原创 HBU算法设计实验 第三章习题

【代码】HBU算法设计实验 第三章习题。

2024-10-29 15:22:20 294 2

原创 HBU算法设计实验 第二章习题

【代码】HBU算法设计实验 第二章习题。

2024-10-19 22:35:29 430 1

原创 HBU算法设计课第一章习题

【代码】HBU算法设计课第一章习题。

2024-10-19 22:16:05 242

原创 P1182 数列分段 Section II

对于给定的一个长度为 N 的正整数数列 A1∼N​,现要将其分成 M(M≤N)段,并要求每段连续,且每段和的最大值最小。所以可以得到要将数列 4 2 4 5 1 要分成 3 段,每段和的最大值最小为 6。对于 100% 的数据,1≤N≤105,M≤N,Ai

2024-10-18 23:54:17 383

原创 P4343 [SHOI2015] 自动刷题机(最详细版本 通俗易懂)

对于一个 OJ,存在某个固定的正整数长度 n,一旦自动刷题机在某秒结束时积累了大于等于 n 行的代码,它就会自动提交并 AC 此题,然后新建一个文件(即弃置之前的所有代码)并开始写下一题。SHTSC 在某个 OJ 上跑了一天的自动刷题机,得到了很多条关于写代码的日志信息。所幸他通过自己在 OJ 上的 Rank 知道了自动刷题机一共切了 k 道题,希望你计算 n 可能的最小值和最大值。若 xi≥0,则表示写了 xi​ 行代码,若 xi

2024-10-18 13:57:59 493

原创 P1902 刺杀大使

整体思路就是。

2024-10-18 13:22:25 370

原创 P1314 [NOIP2011 提高组] 聪明的质监员(最详解版本 通俗易懂)

具体原理如下。

2024-10-18 09:53:33 552

原创 P1083 [NOIP2012 提高组] 借教室

共有 m 份订单,每份订单用三个正整数描述,分别为 dj,sj,tj,表示某租借者需要从第 sj​ 天到第 tj​ 天租借教室(包括第 sj​ 天和第 tj​ 天),每天需要租借 dj​ 个教室。第 2 份订单要求第 2天到第 4 天每天提供3个教室,而第 3 天剩余的教室数 2,因此无法满足。即对于每份订单,我们只需要每天提供 djdj​ 个教室,而它们具体是哪些教室,每天是否是相同的教室则不用考虑。对于 100%的数据,有1≤n,m≤106,0≤ri,dj≤109,1≤sj≤tj≤n。

2024-10-18 09:47:32 1074

原创 P1824 进击的奶牛

他的 CC(2≤C≤N)头牛不满于隔间的位置分布,它们为牛棚里其他的牛的存在而愤怒。为了防止牛之间的互相打斗,Farmer John 想把这些牛安置在指定的隔间,所有牛中相邻两头的最近距离越大越好。Farmer John 建造了一个有 NN(2≤N≤105) 个隔间的牛棚,这些隔间分布在一条直线上,坐标是 x1,x2,⋯ ,xN​(0≤xi≤109)。第 2∼N+1 行:每行一个整数,表示每个隔间的坐标。第 1 行:两个用空格隔开的数字 N 和 C。输出只有一行,即相邻两头牛最大的最近距离。

2024-10-18 09:34:40 339

原创 P4970 全村最好的嘤嘤刀

特殊的,为了保卫八重村,当 l , r 之间存在绯狱丸时,八重樱会优先用她的嘤嘤刀对付绯狱丸,并获得绯狱丸此时拥有的 ai​ 点嘤嘤嘤能量。1 x val 表示在 x 地点出现了携带着 val点嘤嘤嘤能量的绯狱丸,并且绯狱丸会吞噬该点的嘤嘤嘤能量,使得该点的嘤嘤嘤能量变为 val−ai 点,ai为出现绯狱丸的前一刻,该点所存在的嘤嘤嘤能量。值得注意的是,无论八重樱是获取了某一地点的嘤嘤嘤能量还是击败了某一地点的绯狱丸,该地点的嘤嘤嘤值都应当清零而不是保留原来的数值。如果都不符合,请输出 ice。

2024-10-16 13:49:45 660 1

原创 P1738 洛谷的文件夹

例如:/luogu/application/controller/ 表示根目录下有一个名称为 luogu 的文件夹,这个文件夹下有一个名称 application的文件夹,其中还有名为 controller的文件夹。kkksc03 想好了很多应该有的文件夹路径名。输出应包含 N 行,每行 1 个正整数,第i 行输出若要使第 1 个路径到第 ii 个路径存在,最少需要新建多少个文件夹。每个路径的第 1 个字符总是/,且没有两个连续的 /,最后的字符不是 /。洛谷的网页端,有很多文件夹,文件夹还套着文件夹。

2024-10-16 13:25:49 426

原创 P1617 爱与愁的一千个伤心的理由

直接模拟 但有很多需要注意的特判点和一些小卡的思路点 注意即可

2024-10-16 00:08:58 252

原创 P8791 [蓝桥杯 2022 国 AC] 内存空间

对于 String 类型的变量,初始化的内容长度不会超过 50,且内容仅包含小写字母和数字,初始化的值不会是变量。对于数组类型变量,数组的长度为一个整数,范围为:[0,230],数组的长度不会是变量。:字符串变量,占用空间和字符串长度有关,设字符串长度为 L,则字符串占用 L Byte 的内存空间,如果字符串长度为 0 则占用 0 Byte 的内存空间。样例 1,占用的空间为 131072×8=1048576 ,换算过后正好是 1MB,其它三个单位 GB、KB、B 前面的数字都为 0,所以不用输出。

2024-10-15 23:24:18 1104

原创 P1024 [NOIP2001 提高组] 一元三次方程求解

有形如:ax3+bx2+cx+d=0ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在 −100 至 100 之间),且根与根之差的绝对值 ≥1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后 2 位。提示:记方程 f(x)=0,若存在 2 个数 x1​ 和 x2,且 x1

2024-10-15 23:12:57 322

原创 P1563 [NOIP2016 提高组] 玩具谜题

保证不会出现其他的数。现在第 1 个玩具小人告诉小南一个包含 m 条指令的谜題,其中第 z 条指令形如“向左数/右数第 s 个玩具小人”。小南发现,这个谜题中玩具小人的朝向非常关键,因为朝内和朝外的玩具小人的左右方向是相反的:面朝圈内的玩具小人,它的左边是顺时针方向,右边是逆时针方向;这时 singer 告诉小南一个谜题:“眼镜藏在我左数第 33 个玩具小人的右数第 11 个玩具小人的左数第 22 个玩具小人那里。输出一个字符串,表示从第一个读入的小人开始,依次数完 m 条指令后到达的小人的职业。

2024-10-14 23:53:56 752

原创 P8289 [省选联考 2022] 预处理器

对 100%的数据,n≤100,输入的每行字符数都不超过 100,且保证输出的每行字符数都不超过 1000(字符数均不计行末换行符)。注意:出于简化的目的,本题的要求与 C/C++ 语言标准里的描述不完全一致,请以上面的要求为准。如果该标识符是有效的宏名,则用对应的展开内容替换它,此时该宏名进入正在展开的状态,直到本流程结束;如果待展开的宏名与正在进行展开的某个宏名相同,称为 “递归展开”,此时该宏名不再展开。替换发生后,如果展开内容中包含标识符,重复应用以上的展开操作,称为 “多次展开”。

2024-10-14 01:46:36 1261

原创 P7075 [CSP-S2020] 儒略日

为了简便计算,天文学家们使用儒略日(Julian day)来表达时间。所谓儒略日,其定义为从公元前 4713 年 1 月 1 日正午 12 点到此后某一时刻间所经过的天数,不满一天者用小数表达。若利用这一天文学历法,则每一个时刻都将被均匀的映射到数轴上,从而得以很方便的计算它们的差值。现在,给定一个不含小数部分的儒略日,请你帮忙计算出该儒略日(一定是某一天的中午 12 点)所对应的公历日期。我们现行的公历为格里高利历(Gregorian calendar),它是在公元 1582 年由教皇格里高利十三世在原有

2024-10-13 18:28:25 870

原创 P4711 「化学」相对分子质量(简单易懂 且带拓展版本)

做化学题时,小 F 总是里算错相对分子质量,这让他非常苦恼。小 F 找到了你,请你来帮他算一算给定物质的相对分子质量。如果你没有学过相关内容也没有关系,你可以从样例和提示里理解该题所求内容。

2024-10-12 17:49:57 874

原创 P1185 绘制二叉树(最简单易懂版本 包看包会)

因此在预处理阶段计算并记录下每行第一个节点的横纵坐标就显得至关重要 而具体的计算方法也很简单 即为。

2024-10-12 00:35:59 1627

原创 P2830 写程序

int a[maxn] 声明一个数组,开头一定是int,不会是别的什么longlong之类的,a是指一个数组的名称(不一定是a,也有可能是别的字母或者多个字母,总之长度不超过10),后面是一个中括号和一个数字或一个变量,表示数组大小(从0到maxn-1,maxn

2024-10-11 17:31:33 413

原创 P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布

石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。平局两人都得 0 分。第一行包含三个整数:N,NA,NB​,分别表示共进行 N 次猜拳、小 A 出拳的周期长度,小 B 出拳的周期长度。现在,小 A 和小 B 尝试玩这种升级版的猜拳游戏。第二行包含 NA 个整数,表示小 A 出拳的规律,第三行包含 NB​ 个整数,表示小 B 出拳的规律。对于 100%100% 的数据,0

2024-10-11 16:52:03 300

原创 P1003 [NOIP2011 提高组] 铺地毯

现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。接下来的 n 行中,第 i+1 行表示编号 i 的地毯的信息,包含四个整数 a,b,g,k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标 (a,b) 以及地毯在 x 轴和 y 轴方向的长度。如下图,1 号地毯用实线表示,2 号地毯用虚线表示,3 号用双实线表示,覆盖点 (2,2) 的最上面一张地毯是 3 号地毯。第 n+2 行包含两个整数 x 和 y,表示所求的地面的点的坐标 (x,y)。

2024-10-11 16:33:21 390

原创 P2815 IPv6地址压缩

题目背景(友情提示:IPv6 基础知识曾多次出现在 NOIP 初赛中)Internet Protocol,互联网协议,即为我们常说的 IP。我们目前常说的 IP 主要指它的第四版,即 IPv4,它由 IETF 于 1981 年发布。它的地址长度是 32 个二进制位,因此也就有 232 个 IP 地址可供使用,约为 43 亿,在当时,谁也没有料想到 IPv4 如此庞大的地址长度会有用完的一天。在 21 世纪的今天,互联网的蓬勃发展早就了我们如今便利的生活。

2024-10-10 22:35:40 977

原创 P4346 [CERC2015] ASCII Addition

通过将所有的表达式字符(A和B的数字以及符号)作为7 5个矩阵,将这些矩阵转换成ASCII艺术,并将矩阵与单个字符的单个列串联在连续的各个矩阵之间。您的工作是实现一个更简单的功能,回忆过去——添加两个作为ASCII艺术的整数。输入由7行组成,包含用于A+B形式的表达式的ASCII技术,其中A和B都是由至多9个十进制数字组成的正整数,并且没有前导零。给定一个ASCII艺术来表达A+B的形式,找到加法的结果并用ASCII艺术形式写出。输出包含ASCII艺术的7行,对应于加法的结果,没有前导零。

2024-10-10 00:12:09 635

原创 P1917 三子棋II

目前棋局刚开始,棋盘上不到 3 颗棋子,小 a 想知道,根据目前的局势,他有没有必胜策略(也就是自己以最佳方案下棋,无论对手怎么下,自己必胜)。小 a 和 uim 喜欢互相切磋三子棋。就是在九宫格里面 OOXX(别想歪了),谁连成 3 个就赢了。共三行,表示棋局,O 表示小 a,X 表示uim,- 表示没有落子。由于小 a 比较愚蠢,uim 总是让他先。小 a 下的第一个子一定是在中心。虽然小 a 很努力地记录棋谱,可还是下不过 uim。第二行,输出他们已经下了几个棋子。第一行,如果小 a 赢,输出。

2024-10-09 18:37:25 251

原创 P1193 洛谷团队训练 VS 传统学校训练

此外,该中学可能会用 Excel 记录各位同学的训练情况,如果某位同学的某道题的得分高于表格里的记录,那就会花费 Td​ 时间将这个成绩更新,否则就不必费那个事了,如果之前没有提交过这道题视为表格记录的程序为 0 分。然而,支持传统训练方法的教练认为,洛谷并非 100% 的稳定,在有的情况会无法提供服务,因此首先要将洛谷的耗时除以它的可用度(一个小于 100% 的数字 A%)并去掉小数点。接下来 R* 行,评测记录,每行是 Pri,Sri,Sci,分别为该次评测的题目号、学号以及成绩。

2024-10-09 13:43:42 988

原创 P3952 [NOIP2017 提高组] 时间复杂度

小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会来啦!表示新建变量 i(变量 i 不可与未被销毁的变量重名)并初始化为 x, 然后判断 i 和 y 的大小关系,若 i 小于等于 y 则进入循环,否则不进入。, 其中 i 是一个小写字母(保证不为nn),表示新建的变量名,x 和 y 可能是正整数或 nn ,已知若为正整数则一定小于 100。循环体结束时,这个循环体新建的变量也被销毁。

2024-10-08 23:46:15 959

原创 P1367 蚂蚁

有许多蚂蚁在一根无限长的木棍上,每一只蚂蚁都有一个初始位置和初始朝向(任意两只蚂蚁的初始位置不同)。蚂蚁们以每秒一个单位的速度向前移动,当两只蚂蚁相遇时,它们会掉头(掉头时间忽略不计)。现给出每只蚂蚁的初始位置和初始朝向,请你计算出它们在 $t$ 秒后的位置和朝向。

2024-10-08 23:41:16 520

原创 PTA L1-049 天梯赛座位分配

【代码】PTA L1-049 天梯赛座位分配。

2024-07-28 09:55:16 401

HBU算法设计与分析 题目代码全解

HBU算法设计与分析 题目代码全解

2025-01-14

HBU思政常考知识点总结

HBU思政常考知识点总结

2024-12-23

HBU四大名捕之首lws思政课程大题答案整理

HBU四大名捕之首lws思政课程大题答案整理

2024-12-23

私人整理HBU面向对象程序设计选填知识点

私人整理HBU面向对象程序设计选填知识点

2024-12-23

HBU大学语文结课论文-三国研究

HBU大学语文结课论文-三国研究

2024-12-23

算法竞赛中的离散化 概念总结和基本操作全解

算法竞赛中的知识点之一:离散化 一个资源教你看懂离散化的意义和所有常见操作。 在算法竞赛中,离散化是一项重要而实用的技术,尤其在处理涉及大量实数或大范围数值数据时,它能显著优化算法的性能与效率。离散化的核心思想是将原本连续的数值范围或大规模的数值集合,通过某种映射关系转换为一个较小的、离散的数值集合,同时保持数据间的相对关系不变。 具体而言,离散化过程通常包括以下几个步骤:首先,收集并排序所有需要处理的数值;其次,去除重复值,确保每个数值在离散化后的集合中是唯一的;接着,根据排序后的数值创建一个新的、连续的整数序列,每个原始数值对应这个序列中的一个位置或标签;最后,用这些整数标签替换原数据中的相应数值,完成离散化。 在算法竞赛中,离散化的应用广泛,比如在处理区间查询、区间更新等涉及范围操作的问题时,通过离散化可以有效缩小数据规模,降低算法的时间复杂度。此外,在处理一些需要比较数值大小或进行排序的题目时,离散化也能帮助避免浮点数的精度问题,简化计算过程。 值得注意的是,虽然离散化能够显著提升算法效率,但使用时需确保离散化过程不会破坏原问题中的关键信息,特别是数值间的相对顺序和大小关

2024-11-30

算法竞赛位运算(简单易懂)

算法竞赛中的特殊知识点之一 常用来进行状态压缩和动态优化 一个资源涵盖所有基础知识和竞赛中关于二进制状态和位运算的基础操作 包看包会。 算法竞赛中,位运算是一种高效的数据处理技巧,它直接在二进制层面上对数据进行操作,常用于优化算法的性能。以下是位运算的一些基本知识点: 位与(AND):两个位都为1时结果为1,否则为0。在二进制中表示为&。 位或(OR):两个位中至少有一个为1时结果为1。表示为|。 位异或(XOR):两个位不同则结果为1,相同则为0。表示为^。 位非(NOT):反转位的值,1变0,0变1。表示为~。 位左移(Left Shift):将二进制数的所有位向左移动指定的位数,右边补0。表示为<<。 位右移(Right Shift):将二进制数的所有位向右移动指定的位数,左边补符号位(算术右移)或0(逻辑右移)。表示为>>。 位运算在算法竞赛中的应用广泛,例如: 快速幂算法:利用位运算实现快速幂运算,减少乘法操作。 位掩码:通过位掩码快速筛选数据,常用于状态压缩DP。 哈希函数:位运算可以用于设计哈希函数,减少哈希冲突。 状态压缩:在动态规划中,通过位运算压缩状态空间,减少

2024-11-30

常用一维二维 前缀和与差分算法模板总结

算法竞赛中最常用的算法之一:一维和二维的前缀和及差分算法 一个资源教你了解全部模板 包看包会。前缀和是一种数据预处理技术,它指的是从数组的第一个元素开始,到当前元素为止的所有元素的和。这种技术可以快速计算任意区间内元素的和,而不需要每次都从头开始累加。一维数组:基于一维数组的前缀和就是原数据数组的前n个元素的和。基于一维数组的前缀和主要应用场景是可以在O(1)情况下求出任何区间内的和。二维数组:基于二维数组的前缀和,它是指一个前i行和前j列的子矩阵的和。 对于差分来说,他的应用范围比较单一,主要用于可以让一个序列中某个区间内的所有值均加上或减去一个常数。所以差分往往应用于线性的场合,即一维数组的环境。差分是指,序列中每个元素与其前一个元素的差差分则是前缀和的逆运算,它主要用于处理对数组某个区间内所有元素同时增加或减少一个常数的操作。差分数组b的定义是b[i] = a[i] - a[i-1],其中b[1] = a[1]。通过差分,我们可以在O(1)的时间复杂度内实现区间修改操作。差分序列的作用:让一个序列中某个区间内的所有值均加上或减去一个常数。这就是关于前缀和和差分这一个知识的全部内容

2024-11-30

HBU C语言大作业项目

HBU C语言大作业 图书信息管理系统 所有功能均已实现 注释详细 通俗易懂 其中运用链表等知识点

2024-10-17

河北大学网计学院大一c语言4000分刷题系统参考答案

河北大学网计学院大一c语言4000分刷题系统参考答案

2024-10-15

教你最快速看懂高精度算法

1.高精度算法的概念 1.1高精度算法的概念 高精度算法(High Accuracy Algorithm)是处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我们统称为高精度数。但近几年的CSPJ/S复赛貌似从未单独考过高精度算法,但有时会和其他算法一起考。所以还是有学习的必要。 2.高精度算法的思路 2.1高精度加法 用字符串输入两个数,再导入数组,然后每位相加,如果某位数字>10,则此位模10,下一位加一,最后用while循环去除前导零再输出即可。 2.2高精度减法 用字符串输入两个数,再导入数组,判断是否后数比前数,如果是则输出负号再交换数组。然后按位相减不够借1,最后用while循环去除前导零再输出即可。 2.3高精度乘法 导入方法与前面一样,导入后按乘法竖式思路相乘,再按常规思路进位。最后去除前导零就行了。 2.4高精度除法 比较复杂不做过多解释。

2024-07-27

教你最快速看懂二分查找算法

一般步骤: 1.确定一个区间,使得目标值一定在区间中。 2.找一个性质,满足: (1)性质具有二段性(即可以分为两个区间) (2)答案是二段性的分界点 最终结果: 循环结束后,l=r,答案就是上图我们所画的边界。 总结: 根据某个性质将目标值转化为二段性上的分界点(分界点就是答案),具体来讲就是根据某个性质,这个性质使区间具有二段性,使答案在分界点上。 整数二分步骤: 找一个区间[L,R],使得答案一定在该区间中; 找一个判断条件,使得该判断条件具有二段性,并且答案一定是该二段性的分界点; 分析中点mid在该判断条件下是否成立,如果成立,考虑答案在哪个区间;如果不成立,考虑答案在哪个区间; 如果更新方式写的是r=mid,则不用做任何处理;如果更新方式写的是l=mid,则需要在计算mid时加上1(否则会造成死循环);

2024-07-27

三分钟带你看懂归并排序算法

教你快速最简单地看懂归并排序 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 算法思路 归并排序算法有两个基本的操作,一个是分,也就是把原数组划分成两个子数组的过程。另一个是治,它将两个有序数组合并成一个更大的有序数组。 将待排序的线性表不断地切分成若干个子表,直到每个子表只包含一个元素,这时,可以认为只包含一个元素的子表是有序表。 将子表两两合并,每合并一次,就会产生一个新的且更长的有序表,重复这一步骤,直到最后只剩下一个子表,这个子表就是排好序的线性表。

2024-07-27

最快速看懂快速排序算法

让你最快速而又正确、全面地看懂算法竞赛中的排序算法 基本思想为通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 快速排序算法通过多次比较和交换来实现排序,其排序流程如下: 1、首先设定一个分界值,通过该分界值将数组分成左右两部分。 2、将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。 3、然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。 4、重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。 概括来说为 挖坑填数 + 分治法。

2024-07-27

c++中竞赛常用的STL全解

c++中竞赛常用的STL全解

2024-07-27

空空如也

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

TA关注的人

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