文章分类 - 算法蒟蒻 / 数据结构
摘要:【哈希】Hash 模版代码 字符串哈希 //双哈希 const int N = 1 << 21; static const i64 mod1 = 1E9 + 7, base1 = 127LL; static const i64 mod2 = 1E9 + 9, base2 = 131LL; using
阅读全文
摘要:【线段树】 Segment Tree 使用场景 只要满足区间可加性(大区间的信息能由它的两个子区间整理得到) 可以在 O(logN) 的时间复杂度内实现: 单点修改、区间修改、区间查询(区间求和,求区间最大值,求区间最小值) 等 模版代码 【区间修改(加法),区间最值/和】 // 线段树模板类,支持
阅读全文
摘要:【ST表】 用于解决区间最值问题(RMQ) 涉及到许多查询区间最小值/最大值问题时->用ST表维护 预处理操作 O(nlogn) 查询操作 O(1) 思想:动态规划+倍增 ST表构建思路 (1)区间dp:dp[l][r]=max(dp[l][x],dp[x+1][r]) (2)二进制优化:对于每个区
阅读全文
摘要:【单调队列】 运用 求每k个连续的数中的最大值/最小值 模版 滑动窗口https://www.acwing.com/file_system/file/content/whole/index/content/3705/ #include<bits/stdc++.h> using namespace s
阅读全文
摘要:【单调栈】 定义 模版代码 #include<bits/stdc++.h> using namespace std; const int N=100010; int n; int tt; long long stk[N]; long long x; int main(){ scanf("%d",&n
阅读全文
摘要:【树状数组】 模版代码 struct FenwickTree { vector<int> tree; int size; FenwickTree(int n){ size=n; tree.resize(n+1,0); } void update(int pos, int delta){ for(;p
阅读全文
摘要:并查集 解决连通性问题 模版代码 带启发式合并 struct DSU { vector<int> fa, p, e, f; DSU(int n) { fa.resize(n + 1); iota(fa.begin(), fa.end(), 0); p.resize(n + 1, 1); e.resi
阅读全文
摘要:【Trie树/字典树/前缀树】 模版代码 【基础封装】 //注意使用时不要把空间开到栈里:开到全局变量 否则会RE //若多组测试用例:记得trie.Clear() struct Trie{ int ch[N][70],cnt[N],idx=0; map<char,int> mp; Trie(){
阅读全文

浙公网安备 33010602011771号