自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 P1002 [NOIP2002 普及组] 过河卒 解题思路及代码

P1002 [NOIP2002 普及组] 过河卒 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)经典dp题好吧,也没啥好说的,注意下int会爆,开个long long即可。一个技巧是为了避免越界,直接把所有坐标加一,这样就不会出现越界访问了。by————2024.4.18刷题记录。

2024-04-18 21:39:49 385

原创 P1255 数楼梯 解题思路及代码

讲道理普及-,做了给我缓缓脑子用的,还挺快,唯一恶心的点就是刚开始忘记要写高精度直接wa了一发,然后改了,我的高精度板子回头再复习下,这是抄的别人的板子,到时候单独开个记录。P1255 数楼梯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)by————2024.4.18刷题记录。挺简单的,没啥好说的。

2024-04-18 21:36:22 360

原创 AcWing 3429. 全排列 解题思路及代码

这题也是很简单的全排列,主要变成了字符串会有点麻烦,这里说明输出要求按字典序从小到大,题目中告诉我们输入时保证字典序顺序,所以这题会简单点,但我一开始没看到(bushi)所以还复杂的写了个string类型的数组,但问题不大,就当写了道更难的题,这里说明一下,如果题目中的输入没有按照字典序从小到大给出,我们需要手动存答案排序,那样就会用到string自带的比较运算符重载和sort函数来解决这一问题。3429. 全排列 - AcWing题库。by————2024.4.11刷题记录。

2024-04-11 20:15:32 222

原创 AcWing 1111. 字母 解题思路及代码

简单的dfs,没啥难点,直接上代码。by————2024.4.11刷题记录。

2024-04-11 19:48:37 253

原创 AcWing 1491.圆桌座位 解题思路及代码

几个思维难点,1.怎么确认能否坐在上一个人旁边,我选择用类似建图的方式,用一个unordered_map存每个人身边不能坐的人。然后思考后发现,这所谓的排排坐,就好像一个环,那你只要在某个点固定一个数,那其实就可以搜得所有的答案,所以我把1固定在了第一位(这里指存储的数组第一位,环没有第一位之说),解决了这两个问题,剩下的就是一个简单的排列型枚举。注意在搜完要退出时,不要忘记判断最后一个数和1是否可以相邻,因为是一个环。1491. 圆桌座位 - AcWing题库。by————2024.4.11刷题记录。

2024-04-11 19:35:36 252

原创 AcWing 112. 雷达设备 解题思路及代码

我们注意到如果要设立一个新的雷达点,应该尽量在该线段的右端,那如果根据左端点排序,可能出现左端点很小右端点很大的情况,导致这个右端点其实不是最优解,所以依据右端点排序,枚举后判断左端点是否比他小即可,如果想根据左端点排序,每次应该取两次比较的线段的右端最小值作为设置雷达的判断。这题如果直接枚举点肯定是不行的,但可以把每个小岛的可能雷达设置点抽象成x轴上的线段进行贪心,我们的选点尽量选在线段的重合处即可保证数量最少,这里有两个思路的小不同,在对线段进行排序的时候是根据左端点排序还是右端点排序?

2024-04-11 14:55:48 271

原创 AcWing 122. 糖果传递 解题思路及代码

我们假设小朋友是a1,a2,a3.....an,ax给ax-1分xx个糖果,最后每个人的糖果数都是平均数,那么就可以列出类似a1-x1+x2=ave,这种关系式,一共n个,构成一个n个未知数n个方程的方程组,由于这个方程有多种解,所以我们可以把一个数当成已知数去表达其他数,我们可以将x1设为已知,然后分别表示x2-xn。这样就转化为了找到一点x1,使得它在线段上到c1-cn的距离和最短问题,套用。其中c[i]对应xi,list[i]对应a[i],所以我们把原来。by————2024.4.9刷题记录。

2024-04-11 14:42:33 317

原创 AcWing 104. 货仓选址 解题思路及代码

我们可以吧这个情况推及到2n个商店,只需要取最中间的两个点的中间的任意一点(可包括端点),就能取到距离最小值。我们可以看到坐落在B点上的仓库(红色)距离最短。由此可以推出2n+1的商店时,仓库选址选在中间那个商店上就好。这是两个商店的情况,x代表仓库选址,绿色x1,红色x2,蓝色x3,不难发现x2的总距离最短。画的有点丑别介意(画了好久,没数位板很痛苦)104. 货仓选址 - AcWing题库。

2024-04-11 14:22:43 392

原创 AcWing 1055. 股票买卖 II 解题思路及代码

思路的话嘛,这题有个很好证明但不好想到的点,假设在d1买入,dn卖出,会等于d1买入d2卖出d2买入d3卖出以此类推。所以直接做一个猜想(也可以说是推出来的结论)我只要后一天比今天高,我就买入,然后后一天卖出就好。终于是把贪心的几个例题写完了(呕),只能说不看题解大部分题的思路真的很难想,有点过去脑筋急转弯的感觉,且灵光一闪也很难证明自己猜想的正确性,感觉挺难的。1055. 股票买卖 II - AcWing题库。PS:创作等级终于可以自己编辑文章标签了,爽!by————2024.4.8刷题记录。

2024-04-11 12:30:19 149

原创 AcWing 1207. 大臣的旅费 解题思路及代码

讲讲思路,emmmm第一次做和图相关的题,差点把脑子烧坏了,这题涉及的知识点包括bfs(或dfs)和树的直径。由题意,我们可以发现除了首都(根节点)其他节点都是出度和入度都为1的节点,并且每个节点和首都(根节点)有且仅有一条路径,所以求最大花费就是求两个节点间的最大距离,也被叫做树的直径。我使用的一个方式是从首都(可以从任意节点)为起点开始搜索,搜索到的最远节点必然是直径所在的两个点的其中之一,然后再对这个节点进行搜素,搜到的最远点就是直径的另一个节点。所以UY必然是直径,所以Y必然是直径上一点。

2024-04-11 12:02:15 807

原创 AcWing 1233. 全球变暖 解题思路及代码

这种情况,就会出现错误,错误原因是原来上面那个大岛在被淹没后会变成两个小岛,导致计数出问题,所以不行,于是我就换了个思路,搜索四周没有海域的地块,如果一整块大陆都没有,就让被淹没的岛屿数加一,然后ac了,写了两个版本,bfs和dfs的。1233. 全球变暖 - AcWing题库。by————2024.4.7刷题记录。flood fill 算法,和。

2024-04-08 21:19:40 289

原创 AcWing 1096. 地牢大师 解题思路及代码

1096. 地牢大师 - AcWing题库。这题的二维变三维,甚至没有啥难点,秒了。by————2024.4.6刷题记录。

2024-04-08 21:01:42 276

原创 AcWing 1240. 完全二叉树的权值 解题思路及代码

1240. 完全二叉树的权值 - AcWing题库。双指针算法题,甚至感觉不需要双指针()by————2024.4.6刷题记录。

2024-04-08 20:51:49 191

原创 AcWing 1224. 交换瓶子 解题思路及代码

我们假设一个数,和它本身应该呆的位置的那个数连一个单项边(应该是叫这个吧,就是一个箭头),然后我们把整个数组处理完就会把一个数组变成若干个环, 不难得出,最后如果要把所有的数都变成有序地化,n个数,就是n个自环。然后我们再讨论如果把两个数会对环产生什么影响,如果两个数分属两个环,那么就相当于把两个环合并成了一个环,如果两个数都属于一个环,那么就相当于把一个环裂成两个环,不难发现每次操作要么使总环数+1要么-1。为了让最后数组有序,即变成n个自环,现在的环数为k,那么就应该操作n-k次。

2024-04-08 20:37:20 148

原创 AcWing 1113. 红与黑 解题思路及代码

这题也算是裸的模板题,算法是Flood Fill。可以用dfs和bfs做。我因为后面有dfs和bfs都写的,所以这题只写了bfs版本。1113. 红与黑 - AcWing题库。by————2024.4.6刷题记录。

2024-04-08 19:36:25 301

原创 AcWing 1101. 献给阿尔吉侬的花束 解题思路及代码

一道很经典很裸的bfs模板题,简单提一句bfs是啥吧,感觉大家应该都知道,bfs(广度优先搜索)指从根节点开始,每次扩展遍历从当前节点能往前走一步就到达的节点(且没被走过),从而遍历整个图,实现的话一般是用队列实现的。如果不了解的话可以单独去搜搜bfs是啥,这里不过多赘述。1101. 献给阿尔吉侬的花束 - AcWing题库。挺裸的板子题,做的挺爽的,一遍就ac了。by————2024.3.16刷题记录。

2024-04-08 19:32:13 271

原创 AcWing 1238. 日志统计 解题思路及代码

在写之前先发发牢骚(),不想看可以跳过一下,我把csdn当日记本()。讲道理我一个月没更新了,那为啥不更新呢?是我没写题吗?不是,有些,只不过我习惯一个专题刷差不多了再去写csdn,然后。。。。线段树和树状数组现在都还没写完,所以先往后跳了,加上逆天课内排课(指三门数学)根本没啥时间写算法,所以一直拖着,还好最近蓝桥杯马上要比赛了,我也是直接课内放弃了,先把基础学了。不然这300不如吃顿火锅。之后应该会回复更新吧(大概),也有可能考完蓝桥杯就期末月彻底死亡了。得,看题吧。先贴个题目: 以及原题链接:1238

2024-04-08 19:21:58 314

原创 AcWing 788. 逆序对的数量 解题思路及代码

第一种(红色):都在左侧区;第二种(黄色):一个在左侧区间,一个在右侧区间;第三种(蓝色):都在右侧区间。788. 逆序对的数量 - AcWing题库。代码就基本上是套归并的板子,没什么好说的。by————2024.3.1刷题记录。

2024-03-02 18:49:29 385

原创 AcWing 1241. 外卖店优先级 解题思路及代码

然后讲讲思路, 这题原来我想用一个二维数组,一个表示id,一个表示时间,然后读入数据最后遍历处理,但1e5*1e5的数组会爆内存,所以考虑优化,我们发现, 如果直接把订单记录下来,然后按时间排序,就可以节省很大一部分空间,因为店铺优先级可以变成一维数组,然后怎么处理中间没有订单的时候呢?1241. 外卖店优先级 - AcWing题库。确实算是模拟题里面的比较恶心的题了。

2024-03-02 18:18:56 374

原创 AcWing 1231. 航班时间 解题思路及代码

讲下思路吧,这题我不会做(直球)这也是这题其实算是很简单的题出现在我的题解的原因,作为一个重度网瘾患者,我的生活常识可以说是一片沙漠。甚至怎么判断闰年也是最近刚学,好了回归正题,这题要求算飞行时长,由于有时差,所以两地的时间不可以直接相减得答案,在这里举个高中物理的例子(也有可能是初中,至于代码,个人认为没啥难点,除了格式化输入,以及提一嘴d要初始化,因为如果后面没有d,d不会读入数据,而由于d是局部变量,没经过初始化值随机,就会产生错误,其他就没啥了。by————2024.2.28刷题记录。

2024-03-02 01:49:19 337

原创 AcWing 1229. 日期问题 解题思路及代码

其实代码会稍微比纯暴力枚举长很多,但确实计算速度快,由于要按时间先后输出,创建结构体数组以及重载

2024-03-02 01:36:10 359

原创 AcWing 787. 归并排序 解题思路及代码

每次把要分的数组分成两部分,然后因为递归到数组中只存在一个数,然后是两个数,以此类推,我们待会再来讲排序的原理,先默认他就是有序的,那利用两段有序数组,实现整个合并大数组的有序即可。至于原理,就是创建一个临时的数组,然后如果左边数字小于于等于右边数字,就让左边数字进入到临时数组中, 然后记录的下标都右移一格,如此就能归并了。787. 归并排序 - AcWing题库。by————2024.2.28刷题记录。

2024-03-02 01:11:07 367

原创 AcWing 466. 回文日期

那有什么办法可以减少计算量呢,我们发现回文的日期就是月日和年回文,而年是从1000-9999,也就是说只要枚举年,找到相应的回文日期,然后判断是不是合法就行了。这题乍一看有点恶心,如果枚举日期还要判断合法性,然后每个日期再判断是不是回文,即麻烦,时间复杂度又高,466. 回文日期 - AcWing题库。by———2024.2.28刷题记录。

2024-03-02 00:45:10 377

原创 AcWing 1204. 错误票据 解题思路及代码

1204. 错误票据 - AcWing题库。by————2024.2.28刷题记录。嗯,就这样 ,so easy。

2024-03-02 00:30:09 386 3

原创 AcWing 1236. 递增三元组 解题思路及代码

来讲讲思路,第一反应也是暴力枚举,直接三重循环判断,刚准备动手,额O(N立方)的复杂度和N=1e5的现实让我冷静了下来,这肯定是tle,我们先看数据范围,这么极限的数据,连O(n方)都超时而且 O(n)的算法我肯定想不到,三个变量的组合,因此算法的时间复杂度锁定在O(nlogn)这里,那我们只能用一次一重循环,也需可以使用快排来辅助我们操作,经过。1236. 递增三元组 - AcWing题库。by————2024.2.27刷题记录。

2024-03-01 12:40:11 408

原创 AcWing 1210. 连号区间数 解题思路及代码

然后样例过了,然后提交,tle了,T-T。分析下时间复杂度,外面两层循环O(n方),里面sort(nlogn)肯定是超了,那咋办呢?因为题目中的N=1e4,所以我们要把算法优化到O(n方)然后我们就可以从sort做文章,我们不是排序吗?这题我的第一反应是先枚举起始点和最终点,然后排序,然后因为一个差为1的数列必然有的性质就是ai-aj=i-j,因此暴力枚举然后排序判断,就能得到最终答案。1210. 连号区间数 - AcWing题库。by————2024.2.27刷题记录。至于代码部分,没啥好说的。

2024-03-01 12:23:29 392

原创 AcWing 1214. 波动数列 解题思路及代码

这题其实我个人觉得比地宫取宝简单,因为地宫取宝要开个四维数组,可能是我题做的少了,确实是不是很敢去思考四维数组的可能行,而这题和k倍区间有相同思路,我们可以先做个计算,设第一个数是x,那么设数列是+a,-b都是d,那么可以得出,第二个数就是x+d(n-1),第三个数就是x+d(n-1)+d(n-1)所以全部数列相加就是。需要说明的是,这里需要一个技巧,在数论中的负数取余和计算机的取余是不一样的,举个例子,-2%10数论上是等于8,而计算机会输出-2,所以需要一个取模函数来解决这个问题。

2024-02-15 23:02:21 380

原创 AcWing 1212. 地宫取宝 解题思路及代码

先讲讲思路,这题有点难想,但我们仔细分析,可以发现这题是由两种模板题混合而成,一题是最长上升子序列,一题是求走迷宫所能取得的最大宝物价值,先分析我们需要考虑的状态,也就是dp的维度,有xy坐标,目前取得的宝物数量,目前所拥有的宝物最大价值。然后看看可能性的递推怎么解决,我们可以分类讨论,当前位置的宝物拿还是不拿,而拿宝物和不拿宝物又各自分为两部分,从左边走到这一格的可能性和从上面走下来的可能性。1212. 地宫取宝 - AcWing题库。by————2024.2.14刷题记录。我们拿到整体代码中看一下。

2024-02-15 22:30:01 360

原创 AcWing 895. 最长上升子序列 解题思路及代码

这里有一个地方注意一下因为dp数组是全局变量初始值为0,但如果没有之前没有数比当前数大,那么这个数的dp表示应该是1而不是0,我这里用了一个sign特判了一下。最后记得最后一个数的dp不一定是最大值,要遍历整个dp数组找最大值输出。这题有个陷阱,不是连续最长上升子序列,而是自己按顺序取,所以其实就是排列组合,那就可以用dp的思路做,直接开两个数组,一个存原数组,一个存取第i个数的最长上升子序列,然后用一个双重循环直接遍历求解即可。by————2024.2.12刷题记录。

2024-02-13 19:31:32 742

原创 AcWing 1216. 饮料换购 解题思路及代码

1216. 饮料换购 - AcWing题库。这题也是纯数学,而且很简单,直接贴代码了。by————2024.2.12刷题记录。

2024-02-13 19:23:33 407

原创 AcWing 1211. 蚂蚁感冒 解题思路及代码

这题也是完全的数学题,蚂蚁速度相同,相撞后直接掉头,这样很难想具体的运动情况,但注意到速度相同,那不妨看成蚂蚁就是穿过并且感染,这就解决问题了。然后开始分类讨论分析什么样的蚂蚁会被传染,以初始蚂蚁向右为例,如果在初始蚂蚁的右侧,向右爬,永远都撞不到,就不会传染,如果是在右边,向左爬,必定撞上,如果是在左边,向左爬,必定撞不到,如果在左边向右爬,那么会不会被传染取决与右边有没有蚂蚁向左爬,分类讨论之后,用代码实现即可。1211. 蚂蚁感冒 - AcWing题库。by————2024.2.12刷题记录。

2024-02-13 19:21:48 436 1

原创 AcWing 1205. 买不到的数目 解题思路及代码

讲讲思路,纯数学题,和算法毛关系没有,害得我想了半天,多打几次表,就能发现规律,给定X,Y,如果互质,那么就会有最大凑不出的数,也就是。1205. 买不到的数目 - AcWing题库。by————2024.2.12刷题记录。ps:年过完了,该读书了()

2024-02-13 19:14:51 371 1

原创 AcWing 1230. K倍区间 解题思路及题解

讲讲思路,这题其实可以暴力如果数据不够强的话,但很显然以acwing的数据是不行的,因为暴力差不多就是n方复杂度,1e10的计算量只会收获TLE,所以考虑优化。a数组用来存前缀和,b数组用来存到当前位置时每种a%k的余数的节点已经有几个,然后遍历,每次遇到就加上可能的节点选取(即节点数),然后让节点数加一,最后输出总和就好。这里简单概括,如果(a-b)%k=0,那么a%k=b%k。这里需要注意:因为本身如果可以被除尽,那么自身也是一个k倍区间,所以要把b[0]设为1.by————2024.2.3刷题记录。

2024-02-04 17:54:39 343 1

原创 一些写算法题的小技巧记录(不定期更新,想到或者看到就整合进来)

2.如果遇到疑似段错误(数组越界,野指针,堆栈溢出)的情况,可以使用exit()函数分割程序寻找错误点。1.遇到实在不会的题可以考虑打表找规律。

2024-02-04 01:55:04 387 1

原创 AcWing 99. 激光炸弹 解题思路及题解

就这点卡了我三个小时,还是没想明白,望大佬们指教。99. 激光炸弹 - AcWing题库。by————2024.2.3刷题记录。

2024-02-04 00:14:55 348 1

原创 AcWing 796. 子矩阵的和 解题思路及代码

如果要求(1,1)-(2,2)这四块区域的和,那么依然根据容斥原理,在已经计算好前缀和的情况下,不难得出结论: 如果要求a(x1,y1)与b(x2,y2)之间的和,那么。先讲讲思路:前缀和的代码模板题,只不过一维变成二维,而计算的方法也发生了变化,在这边举个例子,要求前面所有格子的和,先画一个3*3的表格。而如果要计算一块区域的和的话,我们不妨再画一张3*3的表格。没啥难度,小技巧从(1,1)开始写,可以不用特判。(这两天有点忙,题解积了几天了。by————2024.2.3刷题记录。

2024-02-03 18:59:29 383 1

原创 AcWing 1227. 分巧克力 解题思路及代码

代码方面,这题的边界我调的挺久的,因为不是传统二分,呃怎么这话怪怪的,反正就是大的要区小 小的要取大,和正常二分的左右端点选择反过来了,导致我一时之间不太会写,最后也算是调出来了吧,没啥好讲的,我自认我的代码还是比较好看懂得(1227. 分巧克力 - AcWing题库。by————2024.1.30刷题记录。

2024-01-31 04:11:42 416

原创 AcWing 730. 机器人跳跃问题 解题思路及代码

因为我这个(龙门脏话)看错答案了,其中longlong 爆了的一组数据答案是53,我看成51了,然后我自己做的时候又一直没发现,这本来是我昨晚11点打算做完就睡的题,确实40分就做完了,结果因为答案和标答老差2百思不得其解,甚至重写了一边代码,最后手算才发现我记得的答案有问题,回原网站看了一眼,浪费了我两个小时。看着挺短的对不对,其实也不难,说几个注意点,刚开始看这个题目觉得不会爆数据,然后样例过了,一交,爆了,开longlong,emmm。我直接不让你超过10位,ok问题解决,皆大欢喜。

2024-01-31 04:00:54 446

原创 AcWing 789. 数的范围 解题思路及代码

原因很简单,第一次查找的是二分后的左端点,第二次是右端点,为了避免死循环,所以一个向下取整一个向上取整,验证方法很简单,当left=right-1即只有两个数的情况时,判断会不会产生死循环即可。其他的话没什么难点。然后先讲讲读题思路,这题一看就是经典中的经典,整数二分,只不过多了一个范围而已,那其实也就多了一次二分查找罢了,一次左端点一次右端点,经典二分,结束。789. 数的范围 - AcWing题库。by————2024.1.30刷题记录。

2024-01-31 03:27:24 354

原创 AcWing 1208. 翻硬币 解题思路及代码

这题直接二维变一维,比费解的开关简单多了,规律一样的,不难发现,前一个硬币选择和右边一起翻和后一个硬币选择和左边一起翻结果是一样的,所以直接指定一个方向,然后再观察到第一个硬币翻或不翻直接决定了第二个硬币翻不翻,然后第二个决定第三个,直接从第一个开始递推,然后解决。顺带一提,以后读题后思考,思路放前面,代码容易出现错误的地方放代码后面,这样便于阅读一点(大概)。1208. 翻硬币 - AcWing题库。by————2024.1.30刷题记录。

2024-01-30 21:41:26 369 1

空空如也

空空如也

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

TA关注的人

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