自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 P1020 [NOIP1999 提高组] 导弹拦截(nlogn)感悟

我刚开始就是在这里出错了,用的是upper_bound(),upper_bound(b,e,val)是找第一个大于等于val的值的迭代器,而lower_bound(b,e,val)查找的是第一个大于val的值的迭代器,就这个区别,在这里要用upper_bound才行,寻找第一个大于val的值,不包含等于,为什么呢?在这个题目里,其实就是从后往前遍历,表示在数轴上,数轴下面的数表示以数轴上面的数为结尾时最长的递减子序列的长度,数轴上面的数表示最长递减子序列的长度等于数轴下面的数时候,结尾数最小的数。

2025-01-06 13:10:10 930

原创 flyod算法感悟

如果有一个最短路径是1->5->4->6->3->2,要计算1到2的最短距离,要先有d[1][3]和d[3][2],此时中间节点是3,要计算1到3的距离,要先有d[1][6]和d[6][3],此时中间节点是6,这里就出问题了,我这k中间节点是从1到n遍历的,怎么能先更新6作为中间节点的时候各个点的距离再更新3作为中间节点的距离呢?同理,要找1到6的距离,首先要找1到5的距离和5到6的距离,1到5的距离在中间节点是1的时候就已将更新了(因为1和5直接相邻),关键是找5到6的距离,为什么是5呢?

2024-12-31 19:03:07 991

原创 tarjan算法感悟

原因是:在tarjan(5)的时候先会遍历6,这样输出一个5,后面在遍历一下7,这样5又被计算了一次,实际上这表示如果删去5的话,6和7都会变成一个新的分量,这样就造成了结果的重复。我们发现在遍历3的时候没有问题,但是在遍历4的时候就出错了,因为4的low[4]=2 >= dfs[2]=2 ,符和判断的代码,所以2被放了进来,为啥呢?背景:最近在学完个算法的时候,写了一个题目,明明是模板,我却一直错,在进行一下午四个小时的思考之后明白了一点,写个博客纪念一下,说不定可以帮助一些人呢还。

2024-12-26 20:10:25 673

原创 使用vector数组时候可能出现的小bug

发现这错误原因是错误代码没有注意到vector<int>top(N);的区别,如果是vector<int>top(N);输入的话最好是cin>>top[i]这样的,但是如果是vector<int>top;按照top.push_back(x)这样是没问题的,看起来这不是显然吗,实际上当你写的代码数特别多时候很容易看错vector<int>top(N);错误代码运行结果:由于N太大,所以在这里将N改为101,这样好看一点,不影响。写作背景:本人在写某个题目的时候出现的错误,现在分享出来,供大家参考。

2024-12-23 16:32:10 215

原创 洛谷P11448 「ALFR Round 3」D 核裂变可能出现的bug

这个for循环里面b的值要不变,如果成++b,那么这个循环里面的b的值就不能保持恒定了,这就发生了错误,至于为什么前面的例子是正确的是因为输入的第三个数据是1,这个循环就循环了一次,所以b的值变不变看不出来,最终结果是一样的,但是输入的第三个数据如果不是1,那么我写的那个代码(++b)就错了。由于本人是个菜鸟,所以没写出来这个题目,但是我在看这道题的题解之后自己写了一遍出现了一个bug,一直AC不了,所以分享出来,万一有人跟我一样想的呢?b+1之后b的值不变,这样保证在。结果:输入:3 3 1。

2024-12-22 17:20:03 284

原创 c++洛谷题目P1540 [NOIP2010 提高组] 机器翻译

【代码】c++洛谷题目P1540 [NOIP2010 提高组] 机器翻译。

2024-12-19 18:50:39 312

原创 c++高精算法(乘法运算)可能出现的小bug

我们发现这两处代码唯一不同的地方就是一个没有len1,len2,另一个有len1和len2,问题就出在这里,我们分析一下第一个错误代码,发现每一次循环之后,a的大小会发生改变,这样就引起了a.size()大小随着改变,这显然不是我们希望的,所以正确代码里面len1和len2这里作用就是记录。首先说明一下这个代码是我从一个洛谷题目题解那里学到的,可能有些出入,因为我根据我的理解稍微改了一下,都是可以正常运行的,这串代码里面注释的是正确答案,没有注释的是我出问题的代码,可以先看看我这代码那里出问题了。

2024-12-18 11:32:14 261

原创 c++里面连用换行符可能会出现的小bug

由于平常本人习惯写转义字符,尤其是换行符时候写成'\n',所以这一次想当然写成了'\n\n',结果不是预期结果,原因就是转义字符本质也是一个字符,使用' '符号表示的是单独一个字符,不能是两个字符。写作背景:我在写代码过程中有一处需要用到换两行的需求,但是按照之前的习惯写出来之后发现了一些问题,网上也没有找到解决办法,所以写下这篇博客记录一下(本人是个小菜鸡,写这个博客就是想记录一下自己初学者遇到过的问题)很简单吧,但是对于初学者来说可能不太容易发现,希望能够帮助你!

2024-12-12 16:03:57 350 1

空空如也

空空如也

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

TA关注的人

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