随笔分类 - 算法合集 / 基础算法
发表于 2024-06-07 17:31阅读:30评论:0推荐:0
摘要:对于树上的两点之间的简单路径,求经过边权值的最大异或和 首先考虑一个点到根节点所经过路径的异或和,可以深搜求出 考虑两点简单路径的异或和,其值一定是两个点分别到根节点的异或和的异或,那么此时我们已知一个点,如果求出另一个点使得两点之间的异或和最大呢? 考虑字典树存取,深搜完之后,将每个点到根节点的异
阅读全文 »
发表于 2024-05-27 23:58阅读:22评论:0推荐:0
摘要:重构一下线段树的博客,关于线段树的相关定义以及证明过段时间再补 首先是一个简单线段树,这里叫做伪线段树,其实本质就是一个二叉树,仅能支持单点操作: 单点修改 + 区间查询 // 单点修改查询 // http://ybt.ssoier.cn:8088/problem_show.php?pid=1549
阅读全文 »
发表于 2024-05-26 12:05阅读:13评论:0推荐:0
摘要: 想必大家都不陌生,这里先贴个模板hh 从0开始: for (int i = 1, j = 0; i < s2.length(); i++) { while (j && s2[i] != s2[j]) j = ne[j - 1]; if (s2[i] == s2[j]) j++; ne
阅读全文 »
发表于 2024-04-15 10:47阅读:10评论:0推荐:0
摘要:什么时候用分块? 当你发现正常数据结构无法解决的时候(比如维度特别多,很不方便或者炸空间),或者复杂到要3个 以上才能解决时。(主要还是得看数据范围,分块的做法一般都是 及以上的 如何分块? 定一个块长 ,整个序列就会被分成
阅读全文 »
发表于 2024-03-27 12:01阅读:11评论:0推荐:0
摘要:以为自己一辈子接触不到的算法,本来以为很高深,没想到是优雅的暴力,太绝妙了 对于多个区间查询,例如区间最大值等,我们考虑暴力,枚举区间 ,取最大值即可,时间复杂度 ,跑不起,所以我们借用数据结构,单调队列,树状数组等等,但是如果此时我们考虑优化暴露 首先我们这样
阅读全文 »
发表于 2024-02-06 16:36阅读:17评论:0推荐:0
摘要:首先是单调队列: 其实单调队列就是一种队列内的元素有单调性(单调递增或者单调递减)的队列,答案(也就是最优解)就存在队首,而队尾则是最后进队的元素。因为其单调性所以经常会被用来维护区间最值或者降低 的维数已达到降维来减少空间及时间的目的。 类似于滑动窗口等,单调队列具有时序性的储存区间最大值或
阅读全文 »
发表于 2024-01-24 16:12阅读:23评论:0推荐:0
摘要:逆序对定义:对于给定的一段正整数序列,逆序对就是序列中 且 的有序对。 P1908 逆序对 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<bits/stdc++.h> #define int long long usi
阅读全文 »
发表于 2023-11-12 15:21阅读:28评论:0推荐:0
摘要:【动态规划】滚动数组的求解(C++) - 林、Zephyr - 博客园 (cnblogs.com) 【精选】滚动数组(简单说明)_儒rs的博客-CSDN博客 //https://www.luogu.com.cn/problem/P2679 /* # 定义状态 # 对于任意一个 0 <= i <= n
阅读全文 »
发表于 2023-09-25 15:15阅读:94评论:0推荐:0
摘要://https://www.luogu.com.cn/problem/P3865 //类似于动态规划和压状dp //f[i][j]是从i位置开始到i+2^j-1的区间内的最大值,一步一步更新所有区间的最大值 //有距离限制,即到达某一位置时,j可能过大导致越界,所以对与每个i,有区间属于:[1,n-
阅读全文 »
发表于 2023-09-17 16:31阅读:16评论:0推荐:0
摘要:# 跑路 ## 题目描述 小 A 的工作不仅繁琐,更有苛刻的规定,要求小 A 每天早上在 之前到达公司,否则这个月工资清零。可是小 A 偏偏又有赖床的坏毛病。于是为了保住自己的工资,小 A 买了一个空间跑路器,每秒钟可以跑 千米( 是任意自然数)。当然,这个机器是用
阅读全文 »
发表于 2023-07-22 11:46阅读:8评论:0推荐:0
摘要://单点修改查询 //http://ybt.ssoier.cn:8088/problem_show.php?pid=1549 //https://www.luogu.com.cn/problem/P1198 //用一维数组来存,当作完全二叉树来存 #include<bits/stdc++.h> us
阅读全文 »
发表于 2023-07-20 14:54阅读:3评论:0推荐:0
摘要://树状数组 //利用lowbit函数将区间划分为以二进制结尾的长度的小区间,然后利用这些小区间相加,减少时间复杂度 //树状数组的本质就是前缀和+可修改区间,求单点前缀和,如果是求某一的区间和,需要稍加修改,下面有类似例题,维护前缀和还有i*前缀和就可以 //也就是说树状数组就是更快一点的前缀和,
阅读全文 »
发表于 2023-07-19 17:22阅读:26评论:0推荐:0
摘要:# 逛画展 ## 题目描述 博览馆正在展出由世上最佳的 位画家所画的图画。 游客在购买门票时必须说明两个数字, 和 ,代表他要看展览中的第 幅至第 幅画(包含 )之间的所有图画,而门票的价钱就是一张图画一元。 Sept 希望入场后可以看到所有名师的图画。
阅读全文 »
发表于 2023-06-18 20:34阅读:20评论:0推荐:0
摘要:kmp算法用于优化字符串匹配效率: //KMP字符串匹配: //模板: #include<bits/stdc++.h> using namespace std; const int N=1e6+10; char s1[N],s2[N]; int ne[N],n,res; int main() { s
阅读全文 »
发表于 2023-06-17 13:59阅读:59评论:0推荐:0
摘要:最近碰到的二分题有点多,而且方法都不同,拿来说一下,顺便给自己做下总结 模板1: while (l < r) { int mid = l + r >> 1; //(l+r)/2 if (check(mid)) r = mid; // check()判断mid是否满足性质 else l = mid +
阅读全文 »
发表于 2023-06-16 22:25阅读:17评论:0推荐:0
摘要:【日报】差分与前缀和,但是加上了一些拓展 - 白色过膝袜 - 洛谷博客 (luogu.com.cn) 预计学习时间: 一天 因为发现有好多题目都需要利用前缀和还有差分来进行优化,所以要花一天的时间把这种基础算法学完. //前缀和: //二维前缀和: //1-1 激光炸弹: https://www.l
阅读全文 »
发表于 2023-05-24 13:01阅读:9评论:0推荐:0
摘要:1 前缀和 /// 给定一组数,求任意区间的总和 #include<bits/stdc++.h> using namespace std; const int N=100010; int n,a[N],s[N],m; int main() { cin>>n>>m; for(int i=1;i<=n;
阅读全文 »