自定义博客皮肤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)
  • 收藏
  • 关注

原创 洛谷P3143 钻石收藏家(双指针)题解

这时我们借助一个数组存储其每段在合法区间内数字数量,之后c数组里面会储存相应最大或第二大的数量,此时我们就需要借助一个中转站,怎么将前面遍历到的有最大数量的那一段也记录,所以mid变量诞生,当此时 i 遍历到第二多数量的长度 ,mid会记录到此长度,之后 i 往后遍历,其之后要么长度比其小,要么就是最长的那一段,当遍历到最长时 此时 i 和 right 肯定不相等,此时mid并未将其计入,而ans会将其right-left 计入答案,实现了错峰计入。此时看我的代码再结合解释,

2025-09-18 19:40:16 287

原创 洛谷p2671求和(绿题,别被名字骗了) 详解

因为每次遍历会产生出一些相应多出来的相同编号的number即a[i] ,而这个数量具体有多少,跟此时同奇同偶同颜色的的数据的数量有关,总比总数要少2,去除了自己乘自己的情况,和将此时用再前面求总和的上面了。1可以和3,也可以和5组合,满足的是题目要求的第一个条件,这是根本的原因,同是顺便解决了题目第二个要求同颜色的条件,之后只需求最后的值就行,而值怎么求。此时,(x+z)可以有(1+3)和(1+5)和(3,5)这三种搭配方式,后面的括号部分同理,那么从总体上看,不要再局限于单个式子了,不然看不懂。

2025-09-16 20:49:46 524

原创 洛谷P1835素数密度 详解

因为题目要求的右边与左边差小于 10^6 ,所以最多有10^3个素数,所以保存里面的素数数量大于1000,而50000的化里面有5千个素数,满足。②当不能被除净,分子减一无影响,之后结果加1则会取到范围内恰好为b[i]整数倍的数。①当被除数能被除数除净时,此时分子减一 ,之后结果加1,值不会变。而当left非常小时,因为素数最小从2开始,所以最小取2。找最大的起始点,先看右边部分,减1是有分两种情况。1,为何开始先遍历,最终值小于50000?因为可能出现把1当作素数的情况。2,这串代码啥意思?

2025-09-15 19:46:33 295

原创 力扣966 元音拼写器(三个哈希表解法)详解

作用还是在于三个哈希表记录各自相应状态下对应的字符串,看我的注释再结合灵神的思路会很完美,我在此只为详细一点注释代码。

2025-09-14 20:20:39 277

原创 洛谷P4017 最大食物链计数 ( DAG与拓扑法 ) 详解

题目如下:

2025-09-14 10:11:35 716

原创 洛谷P1113 杂务(动态规划 记忆化搜索)详解

此处的深搜,会先搜索到最后没有后继步骤的时候停止,此时会返回,到达上一步到达此步的时间,而我们的目的是在最后的步骤中找到要花费最长时间的那一个步骤,记住,整体要从后往前看,finish数组对应索引的数字,并不意味着代表索引越往后,花费的时间越长,总体上是越往前,总时间越长,最后选出最长的那段总时间,则用ans记录,即为最终答案。记住,记忆化搜索,从后往前面想,是最后无后继时,开始返回其花费的时间,选最大的,在加上本身的。

2025-09-13 12:43:39 228

原创 力扣 P3227 字符串元音游戏 (脑筋急转弯)详解

介绍一下 any_of 函数,就是在字符串里面寻找,如果能找到,会返回true,没有找到返回false。若小红先走,里面若存在至少一个元音,不管奇数和偶数,最后都是小红赢。实际上,小红先行动,最优策略只能由小红=决定,小明只能被动的决定。只有当字符串里面一个元音没有的时候,才是小明胜。注意:要怎么去让小红和小明都是最优策略呢。

2025-09-12 10:52:00 196

原创 洛谷PP3916 图的遍历 (反向表 + 贪心)详解

此题如果用dfs的话,时间复杂发太高了,每个数字深搜,会直接超时。此时思考一种方式,如何精妙的去记录每个节点位置。

2025-09-12 09:48:32 496

原创 洛谷PP5318 查找文献 (深度搜索与广度搜索)详解

此题比较有意思,即是再考你图的应用,也在考你dfs与bfs的思维方式,对于我们还说有启发性的。深度于广度相结合,我的具体代码可以再优化的,节省空间。

2025-09-11 21:13:33 177

原创 洛谷P5250 【深基17.例5】木材仓库 (集合法)详解

题目如下:解法:集合容器去解。

2025-09-11 18:55:03 434

原创 洛谷P3405 [USACO16DEC] Cities and States S (哈希表法)详解

核心思路为该创建出一个怎样的容器去记录给定的数据,此时需要运用哈希表的知识,具体操作如代码下方所述。

2025-09-10 18:59:16 263

原创 力扣LCS 03. 主题空间 详解

此题只需我左手一根指甲即可ac,大言不惭(实则连滚带爬,手脚并用)此题难点在于如何去分条件筛选,则直接传递flag作为判定即可。

2025-09-10 14:01:11 259

原创 力扣P1733 需要教语言的最少人数(暴力法) 详解

仔细看题目,你会发现初识是并查集,再看发现只是伪装的一层皮,既然是个伪题,那我直接框框上去就是两拳给他暴力开解。具体超详细代码如下,

2025-09-10 09:33:56 312

原创 洛谷P3370 【模板】字符串哈希 (哈希表)详解

可能有人不理解哈希值, 这里哈希的模的值一般得是比较大的质数,如标准的10007,999983等,但也根据实际情况自己选个合适的,只是最终目的为了保证最后产生代表此字符串的哈希值尽可能的为一,之后遍历次数会很少。(注:解此题我只需左手一根指头,哈哈哈哈哈哈哈)注意,哈希表的好处是能大幅度减少寻找遍历的时间。

2025-09-09 15:49:09 363

原创 力扣P2323 知道秘密的人 (差分数组法)详解

n-forget+1 表示到最后一天结束,此前最少的那天能保持到最后一天还没忘记的最低天数,因为题目求的是到最后一天结束,有多少人知道秘密,所以此时一定不能忘记,在他还能记得的时间限度内。用双重循环,第一重模拟每一天,第二重,模拟那一天在之后相应告诉别人的时间段,为他们对应的时间里的增加的人数加一。

2025-09-09 14:08:19 221

原创 力扣每日一题p1317 将整数转换…… 题解

这个find函数若在字符串内未找到,或返回的是 string::npos 表示为找到,不能用简单的0或者是 i.length(),这个返回的是索引,要求用 此表示 未找到。方法:BF 直接干他(简单题我重拳出击,直接乌鸦坐飞机好吧)

2025-09-08 18:40:39 246

原创 洛谷p1551 亲戚(认祖归宗法)详解

很明显,我该咋证明我跟你是亲戚呢,这肯定得看我们是不是一个祖宗了,是就是亲戚,不是我们就是敌人,首先题目会输入各自的亲戚是谁,此时我们要开始认祖宗,看到一个亲戚,就认他当祖宗,通过最后的祖宗是否同一个来判定他是不是我的亲戚。第二个while循环,目的是把各个路径上的亲戚让他们见到真祖宗,进而给他们赋值,不然他们还迷糊的不知道自己祖宗是谁。第一个while循环,过程如下,关键找到最后的祖宗。而核心我认为在于find函数的路径压缩。

2025-09-08 18:32:53 385

原创 力扣P827 最大人工岛 代码详解

的解释,因为是集合,若直接此处已经插入集合,此次再插入的化会返回false,而此 .second 可用来接收返回的bool 类型 ,再跳过此循环。核心为最后遍历的是海洋区块而不是陆地。

2025-09-07 21:09:55 367

原创 力扣1210. 穿过迷宫的最少移动次数 详解

题目如上:思路与方法:无脑bfs。

2025-09-07 15:32:20 268

原创 力扣p2009 使数组连续的最少操作数 详解

如果要你直接去正面找,难度是很大的,那么从反方向去想,我是否能在里面找到一段最长的子序列,在这个子序列中,最大的那个数 减 最小的那个数,结果小于 nums.length() -1 ,,小于是因为这个子序列历道最大和最小都差不符合我们的要求,有些数字是需要更改不符合的,此时往右移。i为枚举的不重复右端点,找到最长的后,说明在此处范围之内的都符合题意,只需要相减得需要改的数量。以灵神的视角,正难则反。

2025-09-06 15:08:48 166

原创 力扣3495. 使数组元素都变为零的最少操作次数 详解

此处代码注释为详细注释,解释了各个变量一样,为看不懂力扣题解的选手做的批注,力扣此处题解困扰我许久没弄懂,不理解各个变量,所以得此题解。

2025-09-06 15:08:33 272

原创 洛谷P1433 吃奶酪 详解

某个k的二进制,011,吃了第一个和第二个奶酪的状态,1111111,吃了第一到第7所有奶酪的状态,k每加1 实际上是二进制上,位数从0变1或从1变0的转变,对应吃着各个不同的奶酪顺序状态的变更,用于模拟老鼠不同吃法的状态,至于k<n这个上限是应为这个二进制的位数不能超过题目给的奶酪数量。把一个数字看成2进制数字,如 110为二进制,对应数字 6 ,那么这个二进制形式看成此题目的奶酪个数,如 110 从右往左,0这个位置对应 第一个奶酪(未到达),后面的11对应第三个,第二个(已到达),从右往左看,

2025-09-05 15:31:05 759

原创 洛谷p2392kkksc03考前临时抱佛脚 详解(回溯,深度搜索法)

此时,关键一点,有没有想过把其功能想象成一台机器,机器执行此处左端任务,与它搭配的右端任务也随左端运行而运行,消耗的时间假设左端是更大的,那么最终的结果,因为左端与右端成一组,最后的时间随着的是左端,那么我下方代码你就清楚了,核心是此,我问了ai一小时也不知道它在说啥,就不说一组配套找最最大的右端数值。输入数据,找出递归条件,用深度保证适宜的结束,以num总和 / 2 来找到最大的右端大小,再加入nowtime,再进行递归,若不符合,则跳过此处数据,找下一个数据。那么为什么能用回溯,该怎么用。

2025-08-31 19:31:46 245

原创 洛谷p1990覆盖墙壁 详解

【【涂老师】洛谷P1990 覆盖墙壁】 https://www.bilibili.com/video/BV1aL4y1A7Kz/?核心在于如何模拟放置情况,注意要从右至左考虑,考虑少一块时,与前面有啥关联,少两块呢,g数组是为了辅助f数组所建立的,为的是保证最右端处铺的是L型时,怎么计算和统计总方法数。

2025-08-30 10:22:02 186

原创 力扣p1011在D天送达包裹的能力 详解

注意,从check函数下方的left处看,我认为难点在于以啥来二分,都说求啥拿啥分,但实际无从下手,关键在于如何寻找边界,此处边界官方题解讲的很好,最小肯定是平均每天只运一个货物时,最大的货物在某一天运输,此时找它,最大的如代码边所述,关键明白设定的每一个变量的目的,我对于每行代码的注解绝对比90%力扣的题解要详细,细节看具体代码行,若是还卡,说明你需要去学习一下二分的基础。

2025-08-29 20:27:21 683

原创 洛谷P1090 [NOIP 2004 提高组] 合并果子 详解

题目其实本意是要我们找到最小的n-1个数,相加之后再加上总共的数字,也即是若有3个数,找最小的两个相加,此时相当于将最小的两个移动了,之后其和再与最后一个数相加,此时相当于将此所有数都移动,也即符合题意。memset初始化:第二个参数里面若填127,这个数字,则会将数组里面的每个值初始化为接近int类型上限的正数,若为128,则初始化为接近int下限的负数。我认为你可能最大不理解的地方是为啥ans就是最终的结果,但是你要从整体上去看,不要关注于ans,此题解法我用的是哈夫曼编码。

2025-08-29 15:54:52 364

原创 洛谷p2437 蜜蜂路线 详解

注意,此题是否感觉很眼熟,试试往斐波那契数列数列方向想,枚举两个数相差x时,从n走到m需多少步,那么我们可用创建个二维数组记录,差相应数字大小的情况下,有多少走法。高精度这里就不介绍了,比较容易,若时对应f数组还不动,以上方图形为例子,并结合我代码里面所设的开头f数组里面的数字理解。建议先看我代码,从main函数开始,注意main中的for循环,和pluss函数中的循环的目的。

2025-08-29 11:21:35 479

原创 洛谷P1928 外星密码 详解

很明显,需要进行重复的一种操作,不断识别出中括号,再并入字符串,最后输出。此时思考一下递归思路,靠啥识别递归的结束条件,又该返回·啥·

2025-08-29 10:05:35 160

原创 洛谷p1028数的计算 详解

那么也即是自己本身这个数也算一个,也加了上去,所以 ans+= ,之后加的是各个小于等于 m/2,大于等于1,符合要求范围内的各个相应数字对应的他自己拥有的合法数量,说人话是 自己有的,有,满足自己小弟要求的小弟,也都是我的,都通通把小弟各自的都加起来给我。而 ans +=dfs(i) 为何 注意,此处要视野放大,不要局限于递归的地方,总体循环的目的是求此时给的数字m时,有多少合法数列的数量,即结果,如何用递归呢,看到题目比较明显的递归痕迹。此时需要用到记忆化搜索。记忆化核心是高效运算,保障不重复计算。

2025-08-28 22:28:35 217

原创 洛谷p3654 first step 详解

可关键是怎么与方向结合起来呢,这里我们要学会用两个数组记录移动方向,如下:x数组与y数组,0表示行不往下移动,1表示往下一行移动,0表示向右一列移动,0表示不动,注意:要么x不动,y就要动,要保证一个方向要移动。如果遍历到某一点 '.' 时,符合,那么开始进入函数算此点往右或者下方移动时,是否大于k,具体代码注释有。计数很简单,只需要有k个 '.'能连成一排或者一列就算一次。首先,输入与输出是没有问题的。若是一个新人,那该怎么想到呢。

2025-08-28 12:25:00 238

原创 洛谷p3392涂条纹 详解

最后是结尾核心的for循环,w[i] + b[j] - b[i] + r[m] - r[j] 拆分成 w[i] 和 b[j] - b[i] 和 r[m] - r[j] ,表示着涂白色,蓝色,红色各个不同行数时的情况,之后找最小值。此题的核心关键部分是三个数组的设置,目的是分别记录若从第一行开始都有涂成白色,涂到各个行时需要相应多少次。假设结果为白色要涂到第 i 行,蓝色要涂到j行,那么总共 m 行,最后的红色要涂到j+1到m行。如何写,此时需要假设一下了,

2025-08-28 10:27:39 323

原创 力扣p2555详解

此处dp记录的是动态变后的一条线段的左端点的部分在长度小于或等于k长度时,能取的最多的奖品数量,不断记录新的。注意思路与官方题解一致。主要是滑窗和一点点动态规划,

2025-08-27 10:01:02 189

原创 力扣 3258 统计满足 K 约束的子字符串数量 I 题解

此题不评价,有点意思,我在次以两种语言python 和c++,用两种相反的思路写,注意细节不同。原题链接。

2025-07-07 15:56:41 515

原创 力扣 2616. 最小化数对的最大差值 题解

注意此题 p 是给的下标对的个数,若为1,则找2个下标,为2,则找2个下标对,再求这两个下标对中差值最小的那个差值。1,先假设定义最小差值为0,因为是绝对值,最大为整理后的最后一个数减开头一个数。是这个给的数组里面,最大的那个数和最小的那个数相减的绝对值叫做最大差值。2,之后就要不断二分缩小范围,更新最小差值left和最大差值right。而最小值是什么意思是找这给的这么多对里面的最小的那个差值。3,条件有限制,要满足p对,所以要额外加条件。而这个最大差值的最小值是啥意思呢?

2025-06-14 13:08:41 415

原创 3439. 重新安排会议得到最多空余时间 I

此题灵神说的很好,你需要思考,安排n个会议产生的数组,里面假设每场会议之间都有间隔,即使为0也认为间隔为0,那么就有 n+1个间隔会产生,就如上面图中可看出生成的间隔,而k为安排次数,那么你想你每安排一次,就要挪动两个间隔,那么安排k次,就要挪动n+1个间隔,此时创立一个数组大小为n+1,记录间隔时间。因为k为1时,会使两个间隔合并,那么k为k时,使得k+1个间隔合并,此时从0到k才满足要求,加到了相应的间隔数,之后往后面滑,统计出最大的k个时间间隔的和即为所求。

2025-06-09 17:21:50 252

原创 3. 无重复字符的最长子串

此题明显,要想到一个方法统计出现的字母的次数,所以c++设map容器,python建立字典,记录出现的次数,之后不定滑长方式往右移动,当出现2次的情况发生时,往后left加一位,往后走,直到次数为一,将多的那一次被left右移时掠过。此题不定长,可能整个s是答案,也可能 1 是答案。

2025-06-09 14:15:51 209

原创 力扣 1456. 定长子串中元音的最大数目 的多解

标准定滑长思维,借助定滑长长度确定这一特性,直接定位左端点得解,过于简单不做过多说明了。借助不定滑长的思维设定左边界:不断移动左边界解得,当达到k值数目时,再移动左边界。法一:python版。

2025-06-09 14:03:27 221

原创 高精度之加减乘除之多解总结(加与减篇)

开篇总述:精度计算的教学比较杂乱,无系统的学习,且存在同法多线的方式进行同一种运算,所以我写此篇的目的只是为了直指本质,不走教科书方式,步骤冗杂。

2025-05-10 21:49:00 2215

原创 P1786 帮贡排序 详解

对于所有职位排列,给change函数传入职位字符串,若为相应字符串,返回相应结果,职位越大,结果越小,将结果小的排前面,大的排后面,若一样,看等级排。此题提示:虽然文章里面没说,但是实际上,在输入的数据里面除去n,前三行都给的是帮主,副帮主,所以前三排不用排。之后又按另一种格式输出展示顺序,按职位高低排列,若职位相同,按等级先后排序,若等级相同,按先后顺序排序。3,之后再对排列好的顺序赋值,原来的帮主再赋值为帮主,之后的下面位置再赋值为相应位置。此时,很明显要排序两次。2,再进行第一次排序,按。

2025-05-10 10:26:58 244

原创 P1065 [NOIP 2006 提高组] 作业调度方案 详解

第二行是对于工序的排列顺序,对于第一个原件,先在第一个工序做完,之后再在第二个工序做,对应 1 1 , 之后对于第二个工件先做第一道工序,再对于第三个工件,先在第一个工序做,再在第二个工序做,之后最后对于第二个工件在第二个工序上做 对应 2 3 3 2。之后输入的数据接收完毕,该做啥,是不是就应该for循环遍历每道工序,为什么遍历每道工序,因为你要思考,大模拟,大模拟,我是不是要模仿此时工厂的运行,他是对于每个工件的每道工序都有安排,而对于每个原件 有 m个工序,所有总共有 n*m个工序。

2025-05-10 09:34:37 1248

空空如也

空空如也

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

TA关注的人

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