
分块查找算法
HT008_123
家人们点点关注叭
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
BZOJ 2102 数颜色
链接 本题有两种解决方式 1:分块 2:莫队 其实都是差不多的。 先给出分块的方法。初始化将整个数组分为若干块。 spre[i]表示在i之前与i相同颜色最近的那个画笔位置。 在每一块里,将pre[i]升序排列。查询若 查询 的[l,r][l,r]在一个块内,我们可以直接暴力查找。 很明显,当spre[i]< l时,即为一个不同的颜色。 当 查询 的[l,r][l,r]不在一个块内时原创 2018-01-05 09:21:52 · 251 阅读 · 0 评论 -
初识 块状数组
问题 给出一个长串,然后给出n个操作,操作有两种,在某个位置插入一个字符,或者查询第x个位置上的字符是什么 对于这个问题,我们有两种解决方案。 1:数组 查询 O(1) 但是插入最坏可以达到 O(len) 2:链表 插入 O(1) 但是查询最坏也可以达到O(len) 所以如何优化这个问题。 这里介绍一种数据结构——块状数组 何为块状数组? 普通的数组,每个节点都是连续的。原创 2018-01-04 20:47:15 · 491 阅读 · 0 评论 -
[HEOI2015] 公约数数列
题目描述: 题目分析: 分块,块内维护 前缀gcd 前缀Xor 修改暴力重构 查询时若gcd(gcd(块尾,pregcd))==pregcd,则说明本块内的所有数都不影响gcd 二分查找符合要求的Xor 否则暴力查询 题目链接: Luogu 4108 BZOJ 4028 Ac 代码: // luogu-judger-enable-o2 #include <cstd...原创 2018-03-18 08:56:14 · 524 阅读 · 0 评论 -
[Luogu 3674] 小清新人渣的本愿
题目描述: 雾 题目分析: 介绍一种很牛的东西 bitset 相减出x只需要查询(a&(a< < x)).any()即可 +法 维护一个反的bitset即可 乘法枚举因数即可 O(m*(sqrt(n)+ c / 64)) 题目链接: Luogu 3709 Ac 代码: // luogu-judger-enable-o2 #include ...原创 2018-04-14 18:12:26 · 265 阅读 · 0 评论 -
[Luogu 3396] 哈希冲突
题目描述: qwqqq 题目分析: 暴力如何求解呢? for(int i=k;i<=n;i+=p) ans+=val[i]; 考虑预处理 ans[i][j]表示模数为i时内存池j的和 for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) ans[j][i%j]+=val[i]; 这样处理是O(N2)O(N2)O...原创 2018-04-11 14:11:45 · 159 阅读 · 0 评论 -
[Luogu 2801] 教主的魔法
题目描述: 给出N个数字 M l r c 给 l - r的数字加c A l r c 查询 l - r >=c的数字个数 题目分析: 区间加!线段树 线段树不能维护第二个操作啊(雾 分块吧qwq 我们维护一个块的整体加值就好啦 题目链接: Luogu 2801 Ac 代码: #include <cstdio> #include <io...原创 2018-04-11 14:12:27 · 245 阅读 · 0 评论