自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 acwing5579 增加模数

我开始翻看题解,发现2024年提供的题解基本上就是我这个模板,但是ctrl+c/v过来的情况就是现在都TLE了,我猜测这个题目之后的数据应该是加强了,但我确实不知道在哪里优化了,于是又翻看了两个2025年的题解,发现其中说到:大量运算时 尤其是%运算 *运算 long long 的开销会高于 int 会更耗时,m < 45000 也就是运算时最多只是44999 * 44999。和a=(long long)a*a%p;结果又是TLE,而且这次只剩下6个答案来不及输出出来!

2025-05-17 14:24:14 774

原创 2025.5.17 快速幂

【代码】2025.5.17 快速幂。

2025-05-17 14:07:49 212

原创 2025.5.17 字符串hash

输入长度为n的字符串 有m个询问每次有四个参数,l1,r1,l2,r2。求每次[l1,r1]和[l2,r2]所包含的子串是否相等,时的话输出yes,不是no。

2025-05-17 11:58:31 251

原创 2035.5.15 并查集

同时除了完成并查集两个这种最基础的操作,它还支持在完成基础操作的过程中维护一些额外的白变量,比如每个集合的元素数量大小。一开始有n个数,后面有n1个合并集合操作,n2个查询两个元素是否在同一个集合操作。下面代码题意与上面相同,只不过多了n3个查询元素a所在集合的元素数量的操作。2.判断两个元素是否属于同一个集合。

2025-05-15 21:18:19 489

原创 2035.5.14 trie字典树

用到Trie树的字符串一般都是大写或者都是小写,或者都是数字,或者是01(反正不会有很多种字符)输入n1和n2,分别表示存入n1个字符串和查询n2次字符串,每次查询都输出该字符串存储了几次。字典树是一种高效快速存储和查询字符串的数据结构,形态上为一个多叉树。

2025-05-14 21:31:43 409

原创 2025.5.14 kmp算法

kmp算法用于快速在主串中找到匹配的模式串,时间复杂度为o(n)

2025-05-14 20:43:44 125

原创 2025.5.13 单调队列

在一个序列中,有一个长度为k的滑动窗口,从左到右滑动,从第k个数开始,每次滑动之后都输出这个窗口中的最大值和最小值。应用场景十分有限,由于本人当前能力限制,本条博客就只更新其最经典的应用:滑动窗口。如果对你有帮助请给一个免费的赞吧,蟹蟹(❁´◡`❁)如果后序有新的应用我会持续更新的。

2025-05-13 22:46:39 242

原创 2025.5.13 单调栈

单调栈用于在一个序列中,求出每一个数在其左边(右边)第一个比它小(大)的数,由于我们能发现对于每个元素最多进栈一次,最多出栈一次,那么最多是2n。所以时间复杂度是o(n)如果要算右边的大/小版本,只需要先开个数组先将数据存进去,然后用for倒序循环数组,逻辑与左边一致。

2025-05-13 22:04:52 532

原创 2025.5.13 一维前缀和/二维前缀和 一维差分/二维差分

二维前缀和:s[i][j]=s[i][j-1]+s[i-1][j]-s[i-1][j-1]+a[i][j] s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]-s[x1-1][y1-1]而查分是前缀和的逆运算,用于快速对某个区间的数全都加上一个数c。一维前缀和:s[i]=s[i-1]+a[i]前缀和用于快速求出区间和 时间复杂度o(1)

2025-05-13 20:36:41 145

原创 区间合并的应用:格子染色(2019美团面试题)

其实我一开始是用的离散化再加上二维前缀和做的,我将每个点的的x,y值都进行离散化,虽然避免了开一个2e9*2e9的数组,但是离散化后的a数组也需要2e5*2e5理所当然的MLE了,虽然后面想想我这个离散化后从根本上就是错误的,因为离散化后的数组并不能将原本线段的重合给还原出来。后面看了题解才发现,要用到二维的区间合并,然后再判重。与一维的区间合并不同的就是要在每个区间的存储时加上其行号/列号。以下是具体ac代码:时间复杂度是o(n**2),n是1e4。

2025-05-13 13:32:49 689 1

原创 2025.5.12 区间和并

这里给定n个区间,如果有交集的区间就合并为一个大区间,让你求合并完之后总共有多少个区间,其实就是用了区间的左端点排序。最后注意往函数中传递vector记得加上&引用符号防止发生拷贝降低效率。

2025-05-12 16:36:39 177

原创 2025.5.12 实现离散化求解区间和(有解析)

我们将所有需要离散化的下标都存入vector中(包括区间下标),对其进行sort(升序),然后再进行去重,最后每个下标离散化的值就是其在vector中的下标,因为它们在vector中的下标就是0~n-1,那么我们就能通过在vector进行二分查找找到该元素下标,确定它在vector中的下标,我们就得到其离散化的值了。我在写的时候也有这个疑问,但是我最后发现,a中只会在元素下标进行离散化的地方存储值,至于中间夹杂着区间离散化下标的位置,a中存储的就是0。离散化其实就是一种特殊的哈希(hash)

2025-05-12 13:38:40 392

原创 2025.5.11 实现高精度乘法 与 高精度除法

高精度除法:需要注意消除前导0,且为了输入输出与前面三个法则的一致性,div函数中从vector中取数的顺序可能不一样,而且为了配合输出最后的结果vector还需要reverse一下(虽然有点多此一举....)高精度乘法:需要注意t还有剩余,要全部push_back到结果vector上。

2025-05-11 22:32:27 294

原创 2025.5.10 hash表实现

处理冲突用了两种方法: 拉链法 开放寻址法。hash函数均是除留取余法。

2025-05-10 22:59:36 325

原创 2025.5.10 高精度加法 与 高精度减法

高精度加法 这里对A B大小的判断仅限于位数大小。高精度减法 这里对A B大小的比较是数字大小。

2025-05-10 15:36:37 396

原创 2025.5.10 实现整数二分 和 实数(浮点数)二分

这里的例子是给出一个double数,用使出二分求出其平方根。整数二分(有非常多的边界问题)

2025-05-10 14:06:17 147

原创 2025.5.9 手动实现归并排序

而归并排序的归并则需要归并的两段序列是已经有序的,这就需要先递归到最小可解决子问题然后再进行进一步归并,故递归代码在归并代码前面,并且归并代码用到了双指针算法。两个排序都用到了分治思想(divide and conquer)快速排序依赖前一次的排序来进一步进行排序 故排序代码在其递归前。

2025-05-09 22:29:53 233

原创 2025.5.9 quick_sort的手动实现

【代码】2025.5.9 quick_sort的手动实现。

2025-05-09 21:35:42 269

原创 2025.5.9 堆的手动实现以及STL实现

【代码】2025.5.9 堆的手动实现以及STL实现。

2025-05-09 21:27:27 138

原创 Linux学习初步记录

5.i节点(inode)是文件系统中一个非常重要的概念,在Linux系统中,每个文件或者目录都有一个唯一的i节点它存储了文件的元数据信息(包括1.文件类型 2.权限 3.所有者 4.文件大小 5.时间戳[文件的创建时间,最后访问时间和最后的修改时间] 6.数据块指针),系统也是通过这个i节点来识别文件的,硬链接与原始文件共享相同的i节点,也就说明它们共享相同的文件内容(显示存储大小与源文件相同),源文件和硬链接实际上是同一个文件的不同两个名字。别人的自行车我随便蹬嘛xd,还可以一键复原,何乐而不为。

2025-04-24 22:14:08 608

原创 关于acwing 拐杖糖盛宴的做题记录

2.如果a[i]<b[j],那么这头牛每次身高都会翻倍,最大翻30次,就可以达到1e10这个数量级,之后每次的糖第一个到它就一定能在第一次吃完,时间复杂度都是o(1)。这种情况下最有可能跑满o(m*n),但真的跑得满吗,答案时肯定不行,如果能跑满1e10那么任何优化都会超时,知道这点可以让我们怎么说放心点吧(雾)本人首先看到题目n,m都是1e5级别,直觉来看暴力解决就是o(m*n)时间复杂度是1e10级别。这个级别就算是o(n)都没有办法解决 o(n)能解决的数据量在1e8。

2025-04-09 16:30:05 172

原创 关于acwing 农夫约翰最喜欢的操作的做题记录

所以我们将所有的ai%m都放在一个长度为m的环上,此时环上所有的数都可以作为中位数,任选一个点为x,过x和圆心做一个穿过整个圆的直线,在直线右边的点都通过+1来到达x 而左边的模数都通过-1来到达x。同理 这个农夫问题就是求如何放置x 使得所有的ai%m到x的总距离最小(因为每次的操作数都是1,故这里叫做距离)注意我们这里求的是:在所有已经选定的x中的,每个已定x都有一个最小操作数,求的是这些所有最小值中的最小值。x左边区间:a[x]-a[i]+....+a[x]-a[x-1]==(x-i)*a[x]-

2025-04-09 14:45:54 1043

原创 关于acwing 蛋糕游戏的做题记录

故只需要将n个蛋糕中所有连续的n/2+1个蛋糕的每次堆叠的大小中的最小值求出就行(至于为什么n/2+1列举几次例子就行)然后所有蛋糕总数-这个最小值便是elivin贪心吃掉的蛋糕。将o(n*n)转化成了o(n)i++) //构造前缀和数组 一次o(n)后面每次查询都是o(1) 如果不用前缀和 那么循环嵌套就是o(n**2)i++) //构造前缀和数组 一次o(n)后面每次查询都是o(1) 如果不用前缀和 那么循环嵌套就是o(n**2)于是我激动得¥#%……

2025-04-08 15:03:49 880 1

空空如也

空空如也

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

TA关注的人

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