自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 备战蓝桥杯(一些比较基础的模板)

3)对于除法,我们可以把它看成乘法来算,对于一个素数来说,除以一个数等于乘以他的乘法逆元(只需要记住a的乘法逆元是a的m-2次方),eg[(a/b)%c==(a%c*b^c-2)%c](2)对于减法,由于可能出现负数,所以公式会有一点改变[(a-b)%c==(a%c-b%c+c)%c],不要问为什么这样变,手写几个就出来了。1)对于加法运算和乘法运算 取模不会对结果造成影响[eg.(a+b)%c==(a%c+b%c)%c],乘法也是一样的。这个是最基础的a的b次方对c取模的快速幂的模板,相应的。

2025-04-02 16:23:44 202

原创 3.27训练赛补题(2)

当煮波看到这道题的时候,煮波是悲喜交加(喜的是煮波前一天刚刚做过这道题,清晰的记得这道题是用优先队列中的小根堆写的,悲的是煮波由于小根堆的定义太长了煮波当时想着以后再记一下就给忘了),这个题不难想出思路,就是对于每一次都找最小合并,我第一次做的时候就天真的把这个数组进行合并之后就遍历模拟了,但是需要注意的是对于每次都合并都有可能是当前的最小值,不能单单把第一次排序的最小值进行依次合并,要对每次合并之后的数连同剩余的数一块找出最小值然后统计,那么就会想到对于每一次合并都对当前数组进行排序(

2025-03-29 10:02:55 222

原创 3.27-训练赛补题

仔细分析,一个数如果比前面的数要小的话那么这个数是必须要变的(因为题目要求数组a必须是一个非递减数组),那么就对变化之后的数进行判断,如果变化之后还是小于上一个数的话就直接输出NO即可完成,但是如果变化之后满足非递减条件了就需要继续判断了,即为这就完了?对于一个数组,我们让每一个数字都在满足条件的情况下尽可能的小,这样后面的数字才会有更大的机会比前面的数字要大,所以我们可以通过每一个数字都进行操作,通过判断操作后的数来决定是否要进行更改,所以我们很容易会想到,如果这个位置有球的话,

2025-03-29 09:29:19 531

原创 贪心算法基础(2)

首先读入两个字符串,因为要把b中的字符插入a中(没有顺序要求),所以对b进行排序开始遍历字符串a,如果a和b都相等的话就输出a(这里需要注意,举个例子(如果A是ba,B是bb,显然答案应为babb,如果输出的是B字符串的话就是bbba了))加一和减一是两种不同的步骤,不能同时进行,所以我们可以只考虑加1的情况,遍历数组的一半,如果不对称就让数组b存这个数需要的操作数,因为可以连着俩个一块加,所以在进行遍历时先加上两者的最小值,再加上他们需要的次数最后输出即可。最后来看一道题:煮波要累死了。

2025-03-22 14:00:57 213 2

原创 贪心算法基础(1)

依旧贪心,但是不同的是,对于每次合并之后都需要排序选出最小的两个值,如果每次合并之后都就行排序的话显然是不可以的,时间会炸,什么?首先不难想到的就是暴力三重循环遍历数组,但是显然会时间超限,仔细观察会发现,A,B,C是依次递增的,所以我们可以以数组B为对照,通过对小于B的A和大于B的C来寻找答案,所以我们可以把数组A和数组C进行排序之后对于每一个B中的元素用二分查找找出最后一个小于B的A的位置和第一个大于B的C的位置,然后相乘并累加即可。内容有点多了,下期待续~~这个有点简单直接看代码吧。

2025-03-22 13:17:45 295

原创 天梯赛筛选赛补题

我们可以在二维字符串数组中先把魔方存进去(注意这道题目中没有横向转动只有纵向转动,所以我们可以把每个面的两行压缩成一行,最后输出的时候输出两次就行了),首先如果是L的话就是左边的一列整体下移,我们可以用一个字符存最后一个字符,然后通过循环将其整体下移,最后将第一行换成最后一个字符即可完成,同样的R也就是同样的方法对右边一列进行整体的上移,输出的时候就直接对每行都输出两边就行了。煮波会持续更新一些较为基础的比赛题目,比较适合初学者打好基础,大佬们别笑话我,为也只是个菜鸟-_-下面来看代码(不难理解)

2025-03-22 10:38:55 304

原创 理解C++中的大O表示法:计算时间复杂度

为了衡量算法的效率,我们通常会使用**时间复杂度**来描述算法在最坏情况下执行的时间。简单来说,大O表示法告诉我们,随着输入规模的增加,算法的执行时间会如何增长。通过分析代码中的基本操作,我们可以计算出算法的时间复杂度,并选择更高效的算法来解决问题。例如,O(2n² + 3n + 1) 可以简化为 O(n²)。例如,如果一个算法的时间复杂度是O(n),意味着当输入规模n增加时,算法的执行时间会线性增长。5. O(n²):平方时间复杂度。2. 计算基本操作的执行次数:根据输入规模n,计算基本操作执行的次数。

2025-03-19 12:20:44 402

原创 天梯赛选拔赛补题

一眼map,没学过的用二维字符串数组也可以,首先读入字符串(比较难,煮波试了一个小时才能输进去-_-)输进去之后开始遍历字符串,当遇到不是字母的时候说明这一组的名字已经输入完毕了,那么这时候就直接把名字存起来(用string就很方便),当遇到数字的时候直接用另一个字符串(sring)存起来,然后让map对应的字母加上对应的数就行了 ----+-----对于每一位数字,要么就是他的幂,要么就是他的之前的数加起来,话句话说,这个数的幂要么用要么不用(这个于二进制的0和1相符合)不说了,煮波要去补语文了-_-.

2025-03-16 20:33:51 899

原创 简单基础的动态规划---接触第一天

(i,j-1)到达,所以我们只需要通过比较找出这两个数的最小值即可,即dp[i][j]=min(dp[i-1][j],dp[i][j-1])+a[i][j];2-接下来找出状态转移方程,我们可以知道到达一个点(i,j),可以从上面(i-1,j)到达也可以从左边。题目描述:在给定的m*n的二维数组中,找出从左上角到右下角的最小的路径上的数字的累加和。1-首先还是定数组dp【i】【j】表示从起始点到目前的路径值的和的最小值。3-初始化初始值,需要对第一行和第一列进行初始化。

2025-03-14 18:40:02 167

空空如也

空空如也

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

TA关注的人

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