随笔分类 -  板子 / 数据结构模板

摘要:动态维护第k大 priority_queue<int> a; //大根堆 priority_queue<int,vector<int>,greater<int> > b; for(int i=1; i<=n; i++){ int x; scanf("%d",&x); if(b.empty()||x> 阅读全文 »
posted @ 2024-03-23 20:43 potential-star 阅读(6) 评论(0) 推荐(0) 编辑
摘要:1.单点加 2.前缀和查询 int n, m; int a[N]; int tr[N]; int lowbit(int x){ return x&(-x); } void add(int pos,int k){ for(int i=pos;i<=n;i+=lowbit(i))tr[i]+=k; } 阅读全文 »
posted @ 2024-03-20 22:30 potential-star 阅读(86) 评论(0) 推荐(0) 编辑
摘要:以一道区间和查询来说明板子如何使用 1.merge的时候只需要维护两个根节点的距离,利用的是合并时题目给的信息 2.find的时候更新维护是子节点到根的距离 3.需要加一个查询函数,因为距离数组是开在结构体内部的。 题目描述 对于一个长度为 N 的整数数列 \(A_{1}, A_{2}, \ 阅读全文 »
posted @ 2024-03-02 16:56 potential-star 阅读(10) 评论(0) 推荐(0) 编辑
摘要:已知一棵包含 N 个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 1 x y z,表示将树从 xy 结点最短路径上所有节点的值都加上 z。 2 x y,表示求树从 xy 结点最短路径上所有节点的值之和。 3 x z,表 阅读全文 »
posted @ 2023-12-10 03:16 potential-star 阅读(6) 评论(0) 推荐(0) 编辑
摘要:给定 n 个整数构成的序列 a,将对于指定的闭区间 [l,r] 查询其区间内的第 k 小值。 题目一开始的离散化复杂度为O(nlogn),构建基础主席树复杂度为O(nlogn),统计并插入的复杂度是O(nlogn+nlogn)=O(nlogn),询问的 阅读全文 »
posted @ 2023-12-10 02:15 potential-star 阅读(6) 评论(0) 推荐(0) 编辑
摘要:最大异或和 给定一个非负整数序列 {a},初始长度为 N。 有 M 个操作,有以下两种操作类型: A x:添加操作,表示在序列末尾添加一个数 x,序列的长度 N1。 Q l r x:询问操作,你需要找到一个位置 p,满足 \(l \l 阅读全文 »
posted @ 2023-12-10 01:54 potential-star 阅读(12) 评论(0) 推荐(0) 编辑
摘要:给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。每个数字不超过1e9。 int n, m; int a[N]; int tr[N]; vector<int>lan; int lowbit(int x){ return x&(-x); } void discrete() { sort(l 阅读全文 »
posted @ 2023-12-09 22:51 potential-star 阅读(9) 评论(0) 推荐(0) 编辑
摘要:维护一个字符串集合,支持两种操作: I x 向集合中插入一个字符串 x; Q x 询问一个字符串在集合中出现了多少次。 所有输入的字符串总长度不超过 105( 也就是节点数) const int N=100010; int n; char s[N]; int ch[N][26],c 阅读全文 »
posted @ 2023-12-09 16:58 potential-star 阅读(10) 评论(0) 推荐(0) 编辑
摘要:struct DSU { vector<int> f, siz; DSU() {} DSU(int n) { init(n); } void init(int n) { f.resize(n); std::iota(f.begin(), f.end(), 0); siz.assign(n, 1); 阅读全文 »
posted @ 2023-12-03 21:01 potential-star 阅读(22) 评论(0) 推荐(0) 编辑
摘要:离散化是一种数据处理的技巧,本质上可以看成是一种 哈希,其保证数据在哈希以后仍然保持原来的全/偏序关系。 https://oi-wiki.org/misc/discrete/ 通俗地讲就是当有些数据因为本身很大或者类型不支持,自身无法作为数组的下标来方便地处理,而影响最终结果的只有元素之间的相对大小 阅读全文 »
posted @ 2023-11-12 21:10 potential-star 阅读(19) 评论(0) 推荐(0) 编辑
摘要:封装函数版本 template <typename T, class F = function<T(const T&, const T&)>> struct SparseTable { int n; vector<vector<T>> st; F func; SparseTable(const ve 阅读全文 »
posted @ 2023-11-07 17:44 potential-star 阅读(13) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示