02 2024 档案

摘要:哈希 树哈希,就是对于树的哈希 #include<bits/stdc++.h> using namespace std; #define ull unsigned long long int m,n; vector<int> son[60]; ull shift(ull x){ x^=x<<13; 阅读全文
posted @ 2024-02-27 23:45 Reality_Creator 阅读(6) 评论(0) 推荐(0) 编辑
摘要:单调栈 定义 一种栈,其中的元素满足单调性 解决NGE问题 NGE问题(Next Greater Element) #include<bits/stdc++.h> using namespace std; const int N=3e6+10; int n; int a[N],stk[N],f[N] 阅读全文
posted @ 2024-02-27 00:27 Reality_Creator 阅读(4) 评论(0) 推荐(0) 编辑
摘要:基数排序和计数排序 跟比较排序比起来,感觉复杂度开挂了 计数排序非常依赖于数值范围,是开了一个值域的桶,然后对着桶输出所有元素,在值域小的情况下非常的快 \(O(V+n)\) 计数排序还有一种权值线段树优化,可以解决大值域问题 \(O(n\log V)\),但是没有什么用删掉 基数排序可以看作计数排 阅读全文
posted @ 2024-02-27 00:27 Reality_Creator 阅读(1) 评论(0) 推荐(0) 编辑
摘要:随机化 这是一个脱离了理论,但是及其实用的领域。 随机数的生成 1.1 mt19937 mt19937 可以生成 32 位整数,基于梅森旋转算法,实用性较强。笔者习惯于使用时间的随机种子。 auto now = chrono::system_clock::now(); auto timestamp 阅读全文
posted @ 2024-02-27 00:16 Reality_Creator 阅读(6) 评论(0) 推荐(0) 编辑
摘要:卡常科技 针对于毒瘤出题人 IO optimize cin/cout 很慢,但是 ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); cout<<endl;//Wrong cout<<'\n';//Right scanf/printf 比较快,但对于毒瘤 阅读全文
posted @ 2024-02-26 23:32 Reality_Creator 阅读(6) 评论(0) 推荐(0) 编辑
摘要:1.根号分治与分块 在预处理与询问的复杂度之间寻找平衡的一个算法,通常以根号为分界线。属于智慧的暴力。 1.1. 根号平衡 使用数学不等式对于阈值取一个值,使得复杂度最优。如果有阈值 \(B\),若问题有一部分暴力可以 \(O(B)\) 解决,另一部分可以 \(O(\frac{n}{B})\) 解决 阅读全文
posted @ 2024-02-26 23:06 Reality_Creator 阅读(10) 评论(0) 推荐(0) 编辑
摘要:树套树 树状数组,(动态开点线段树),平衡树 二逼平衡树 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 查询 \(k\) 在区间内的排名 查询区间内排名为 \(k\) 的值 修改某一位值上的数值 查询 在区间内的前驱(前驱定义为小于 ,且最大的数) 查询 \(k 阅读全文
posted @ 2024-02-25 22:21 Reality_Creator 阅读(4) 评论(0) 推荐(0) 编辑
摘要:ABC342总结 A+B+C+D 虽然有奖,但是一无所获,都排到2000名左右了。 赛时快速通过前四题,但是第五题被题目迷惑,第六题思路混乱,第七题本来是能力范围之内(数据结构是chn oier的特长),但是没读题。 E 一个最短路,这是有提示的,但是有一个迷惑信息。题目让我们求从 A 最晚出发的时 阅读全文
posted @ 2024-02-25 11:55 Reality_Creator 阅读(33) 评论(0) 推荐(0) 编辑
摘要:ABC341总结 Score:1825 Rank:737 F 其实按照题意,原图可能有环,但是因为转移有权值限定,转换一下就是DAG,进行拓扑排序。 G AK所差最后一题,使用数形结合思想,x轴为数组下标,y轴为值域。 题意是给出左端点,右端点任意,求区间平均值最大 进行前缀和处理,然后会惊奇的发现 阅读全文
posted @ 2024-02-22 23:47 Reality_Creator 阅读(17) 评论(0) 推荐(0) 编辑
摘要:笛卡尔树 定义 以一个数列为基础,存储数列中元素,满足两个限制的树。一是数列中元素的下标满足二叉搜索树的性质,二是元素的大小满足堆的性质。 建树 使用单调栈,在线建树。考虑从左往右在已有的笛卡尔树中添加元素,因为新元素的下标最大,所以只可能取代最右链中的某个元素,并将其收为左儿子。又由于堆的性质,所 阅读全文
posted @ 2024-02-22 23:39 Reality_Creator 阅读(2) 评论(0) 推荐(0) 编辑
摘要:区间最大最小值(RMQ) st 表 利用 min,max区间合并是可重的,倍增预处理 时间复杂度 \(O(n \log n+ q)\) 空间复杂度 \(O(n\log n)\) 线段树 二进制划分区间 时间复杂度 \(O(n \log n)\) method of four russians 建立笛 阅读全文
posted @ 2024-02-22 23:39 Reality_Creator 阅读(6) 评论(0) 推荐(0) 编辑
摘要:小清新线段树 定义 结合时间复杂度分析(势能分析)以及懒标记应用的非传统线段树 可以理解为带剪枝的线段树 复杂度证明 以 The Child and Sequence 为例,先看操作 1,2,对于一个数 \(x\) 进行取模,要么这个数保持不变。若模数 \(M>\frac{x}{2}\),则剩余部分 阅读全文
posted @ 2024-02-20 22:37 Reality_Creator 阅读(11) 评论(0) 推荐(0) 编辑
摘要:网络流最大流 有向图 \(G\) 中,有两个特殊的点,源点和汇点,每条边有指定的容量,求 \(S\) 到 \(T\) 的最大流。 就像从源点放水,水量无穷大,汇点的水量是多少? 定义 \(c\) 为容量,\(f\) 为流量 流量守恒 \(f(x,y)\leq c(x,y)\) 容量性质 \(\sum 阅读全文
posted @ 2024-02-19 20:00 Reality_Creator 阅读(8) 评论(0) 推荐(0) 编辑
摘要:01trie 定义 01-trie是字符集为0,1的trie,可以维护异或极值,维护异或和 实现 主体仍然是 trie ,维持 \(t\) 数组记录儿子不变。需要因为异或的性质,所以只需要维护加入 0/1 边的奇偶性即可,所以添加 \(w\) 数组记录父节点到该节点的边数。此外因为要统计异或和,所以 阅读全文
posted @ 2024-02-16 18:30 Reality_Creator 阅读(8) 评论(0) 推荐(0) 编辑
摘要:矩阵快速幂 定义 使用矩阵乘法加速递推 注意点 可以预处理 \(2^k\) 次乘方的转移数组,到询问时,只需要乘 \(log(n)\) 次即可 要注意矩阵的赋值不要覆盖赋值,有的时候慎用 = 要用 += 要注意矩阵中的符号,会使取模操作出问题 要注意加速递推时 f[i]=f[i-1] 处于i位的数应 阅读全文
posted @ 2024-02-16 15:55 Reality_Creator 阅读(3) 评论(0) 推荐(0) 编辑
摘要:线段树进阶 动态开点 定义 动态存储数据的线段树,可以优化空间复杂度 实现 为了避免 \(N<<1\) ,不再使用完全二叉树存储,而记录左右儿子 \(ls,rs\) 此外需要 \(tot\) 记录已经开了多少点 在递归时要记录点的左右区间,确保开点时能知道区间大小 void modify(int & 阅读全文
posted @ 2024-02-16 15:53 Reality_Creator 阅读(3) 评论(0) 推荐(0) 编辑
摘要:VP-CF1879 总结 Url:https://codeforces.com/contest/1879 Score:A+B+C+D D 做出来了,使用了一个复杂的方法。拆位肯定没错,但是有异或前缀和的方法,可以大大简化码量。 E 做出来了,贪心搞出来性质,即按深度染色。但是没读题,没看到 \(k\ 阅读全文
posted @ 2024-02-16 15:28 Reality_Creator 阅读(3) 评论(0) 推荐(0) 编辑
摘要:重链剖分 优先走重儿子,路径跳不超过 \(O(\log n)\) int siz[N],fa[N],dep[N],top[N],dfn[N],hson[N],dfc;//注意每个都要处理 void dfs1(int x,int Fa){ fa[x]=Fa; siz[x]=1; hson[x]=0; 阅读全文
posted @ 2024-02-16 15:22 Reality_Creator 阅读(2) 评论(0) 推荐(0) 编辑
摘要:CF1929 总结 Url:https://codeforces.com/contest/1929 Rating:https://codeforces.com/bestRatingChanges/12561378 C 误解了题意,以为赌场会配合他前面x次都输然后赢最后一场。原来赌场不会配合Sasha 阅读全文
posted @ 2024-02-16 15:19 Reality_Creator 阅读(12) 评论(0) 推荐(0) 编辑
摘要:虚树 (Compressed Tree) 定义 树上有一些关键点,有很多无用点,所以就关键点建树称为虚树。 建立虚树 不能只有关键点,一般还要有他们的lca,才能统计信息。信息的需求和统计方法多种多样,要求max,min,cnt等等。可以树链剖分+线段树或倍增法维护虚边。 可证虚树节点不超过 \(2 阅读全文
posted @ 2024-02-16 11:55 Reality_Creator 阅读(2) 评论(0) 推荐(0) 编辑
摘要:OI 方法论 分析问题性质 问题建模 加速求解 c++语言实现 分析问题性质 二选一:2-sat 区间问题:树状数组,线段树(优化建图),前缀和,差分 最大的最小值,最小的最大值:二分答案 多个状态的值:可持久化数据结构 往往找出问题性质,是解题的突破口 性质的工具——美妙的数学 注意不等式两边同乘 阅读全文
posted @ 2024-02-08 15:45 Reality_Creator 阅读(3) 评论(0) 推荐(0) 编辑
摘要:Store a tuple of (value of maximum, index of maximum, value of the second maximum). To merge two segments, we compare if the indices of the maximums a 阅读全文
posted @ 2024-02-07 18:56 Reality_Creator 阅读(2) 评论(0) 推荐(0) 编辑
摘要:最大流问题 有向图 G 中,有两个特殊的点,源点和汇点,每条边有指定的容量,求S到T的最大流。 就像从源点放水,水量无穷大,汇点的水量是多少? 定义 c为容量,f为流量 流量守恒 \(f(x,y)\leq c(x,y)\) 容量性质 \(\sum f(u,x) = \sum f(x,u)\) 斜对称 阅读全文
posted @ 2024-02-04 12:41 Reality_Creator 阅读(4) 评论(0) 推荐(0) 编辑
摘要:CDQ分治 引入 偏序问题 对于每个有序对 \((a_i,b_i)\) 求有多少个有序对 \((a_j,a_j)\) \(a_i<a_j,b_i<b_j\) 暴力 \(O(n^2)\) 按 \(a\) 排序,问题为求顺序对,cdq分治 定义 解决特定种类问题的算法,统计左区间对右区间的贡献,一个点所 阅读全文
posted @ 2024-02-04 12:41 Reality_Creator 阅读(2) 评论(0) 推荐(0) 编辑
摘要:点分治 定义 树上的分治 先求一个点的答案,然后求子树 树上距离小于等于k的点对数量 枚举一个点 p 求解经过p的点对贡献,然后递归解决子树 为了降低分治复杂度,要求重心,求重心要限定子树范围内,添加 vis 防止上访,求dis也要 ans要减去在同一个子树 重心的子树小于 \(n/2\),所以调用 阅读全文
posted @ 2024-02-04 12:40 Reality_Creator 阅读(3) 评论(0) 推荐(0) 编辑
摘要:启发式合并 定义 在并查集和树上处理离线问题的算法,主要思想是把小集合并到大集合上 做法 树上颜色:一棵树,每个节点都有一个颜色,给定 m 次询问,问以 x 为根的子树有多少种不同的颜色。 轻重剖分,只需要记录重儿子即可。先遍历轻儿子,不计修改。再遍历重儿子,计入修改。最后再遍历轻儿子(dfs序列简 阅读全文
posted @ 2024-02-04 12:39 Reality_Creator 阅读(1) 评论(0) 推荐(0) 编辑
摘要:主席树 定义 可持久化的线段树 实现 void mkrt(int &p,int q){ int tmp = mknode(); t[tmp] = t[q]; p = tmp; } void pushup(int p){ t[p].dat = t[t[p].ls].dat+t[t[p].rs].dat 阅读全文
posted @ 2024-02-04 12:39 Reality_Creator 阅读(2) 评论(0) 推荐(0) 编辑
摘要:线性基 定义 一个正整数序列,让线性基可以用异或和表示其中任意一个数,并且线性基的个数最少 性质 序列中的任何一个数都可以由线性基中的数异或得到 任何数的异或和不为零 保持性质一的前提下,线性基的数量唯一且最少 线性基的构造 不能插入线性基,即x经过若干次异或变成0,根据性质三不需加入 可以被插入, 阅读全文
posted @ 2024-02-02 17:12 Reality_Creator 阅读(1) 评论(0) 推荐(0) 编辑