分块
设阈值 T ,把数据划分为两类,某一类的数据具有某种优势,另外一类的数据又具有另外一种优势,就可以结合利用两种优势,达到更优秀的复杂度。
序列分块
1. 「TH 2517」数颜色
单点修改,区间不同数个数,强制在线。
2. 「SPOJ UNTITLE1」
n <= 5e5 ,区间增加等差数列,区间最值。
区间修改、区间查询是一类经典问题,数据结构的做法通常是划分为若干个子区间,若子区间的信息能够合并,则使用线段树,否则分块。
对于斜率优化的问题,建了凸壳之后,可以直接三分,不需要二分。
块状链表
1. 「BZOJ 3065」带插入区间第 K 小
块的大小在 [c, 2c] ,从而保证复杂度。初始化,查找位置(在末尾添加一个字符),插入(分裂),删除(合并)。
值域分块
1. 给定一个长度为 n(1e5) 的序列 a[1], a[2], ..., a[n] .
m(1e5) 组询问 (l, r, K) , 求区间 [l, r] 去除重复的数之后的第 K 小.
按大小分块
1. 「2013 年国家集训队论文」
给 n 个字符串 ti ,支持合并,或者查询字符串 s 中出现过多少个字符串 ti 。
2. 「2013 年国家集训队论文」
给 n 个区间 [li, ri] ,m 组询问 [l, r] ,求与 [l, r] 相交的最长连续子序列的长度。
按质因子大小分块
1. 「AGC 003D」Anticube
K 补数:定义,求解,平衡规划至 $W ^ {\frac{1}{3}}$ 。
2. 「POI 2010」Divine Divisor
给 n = a1 * a2 * a3 * ... * am ,m <= 600, ai <= 1e18 。求最大的 K ,存在完全 K 次方因子,并求出此时完全 K 次方因子的个数。
类似 AGC 003D 的做法。将因子分解完之后,取最大次数即可。设 W = 1e6 ,对 W 以内的进行分解,剩下最多只能再分解两次,有三种可能:p, pq, p^2 ,对 p^2 直接判掉,求两两 gcd 尝试将 pq 进行分解,否则 pq 作为整体考虑,权重为 2 。
3. 「TH 2603」乘积
选择 K 个不超过 N(500) 的正整数,乘积为无平方因子数,问选择方案数。
图分块
1. 「TH 1021」边学图论边染色
n 点 m 带权边无向图,点权 0 和 1 ,要么将某个点的颜色改变,要么询问所以 x - y 边的边权和。
重点擅长枚举点、枚举重点到重点的边,轻点擅长枚举边,边要去重。
莫队算法
1. 带修改莫队
$A = \left\{ a_1, a_2, ..., a_n \right\}$ ,单点修改,询问区间不同数个数。
2. 树上莫队
入栈出栈序的性质:
1. 当 x 是 y 的祖先时,$\Delta [in(x), in(y)] = path(x, y)$
2. 当 x 和 y 没有祖先关系,$out(x) < in(y)$ 时,设 $z = LCA(x, y)$ ,则 $\Delta [out(x), in(y)] = path(x, y) \cup \left\{ z \right\}$
莫队维护对称差。
3. 可撤销莫队
「BZOJ 4358」permu:求区间最长值域连续段。
定期重构
1. 朝鲜树,带插入的 Kd-tree 。
Sdchr
天上下,我独尊,观自在,守本心。
随笔 - 17 文章 - 0 评论 - 2
天上下,我独尊,观自在,守本心。
随笔 - 17 文章 - 0 评论 - 2
分块
1. 「TH 2517」数颜色
单点修改,区间不同数个数,强制在线。
2. 「SPOJ UNTITLE1」
n <= 5e5 ,区间增加等差数列,区间最值。
区间修改、区间查询是一类经典问题,数据结构的做法通常是划分为若干个子区间,若子区间的信息能够合并,则使用线段树,否则三分,不需要二分。
块状链表
1. 「BZOJ 3065」带插入区间第 K 小
块的分块
1. 给定一个长度为 n(1e5) 的序列 a[1], a[2], ..., a[n] .
m(1e5) 组询问 (l, r, K) , 求区间 [l, r] 去除重复的数之后的第 K 小.
按分块
1. 「2013 年国家集训队论文」
给 n 个字符串 ti ,支持合并,或者查询字符串 s 中出现过多少个字符串 ti 。
2. 「2013 年国家集训队论文」
给 n 个区间 [li, ri] ,m 组询问 [l, r] ,求与 [l, r] 相交的最长连续子序列的长度。
按质因子分块
1. 「AGC 003D」Anticube
K 补数:定义,求解,平衡规划至 $W ^ {\frac{1}{3}}$ 。
2. 「POI 2010」Divine Divisor
给 n = a1 * a2 * a3 * ... * am ,m <= 600, ai <= 1e18 。求最大的 K ,存在完全 K 次方因子,并求出此时完全 K 次方因子的个数。
类似 AGC 003D 的做法。将因子分解完之后,取最大次数即可。设 W = 1e6 ,对 W 以内的进行分解,剩下最多只能再分解两次,有三种可能:p, pq, p^2 ,对 p^2 直接判掉,求两两 gcd 尝试将 pq 进行分解,否则 pq 作为整体考虑,权重为 2 。
3. 「TH 2603」乘积
选择 K 个不超过 N(500) 的正整数,乘积为无平方因子数,问选择方案数。
图分块
1. 「TH 1021」边学图论边染色
n 点 m 带权边无向图,点权 0 和 1 ,要么将某个点的颜色改变,要么询问所以 x - y 边的边权和。
重点擅长枚举点、枚举重点到重点的边,轻点擅长枚举边,边要去重。
莫队算法
1. 带修改莫队
$A = \left\{ a_1, a_2, ..., a_n \right\}$ ,单点修改,询问区间不同数个数。
2. 树上莫队
入栈出栈序的性质:
1. 当 x 是 y 的祖先时,$\Delta [in(x), in(y)] = path(x, y)$
2. 当 x 和 y 没有祖先关系,$out(x) < in(y)$ 时,设 $z = LCA(x, y)$ ,则 $\Delta [out(x), in(y)] = path(x, y) \cup \left\{ z \right\}$
莫队维护对称差。
3. 可撤销莫队
「BZOJ 4358」permu:求区间最长值域连续段。
定期重构
1. 朝鲜树,带插入的 Kd-tree 。
posted @ 2017-11-30 10:05 Sdchr 阅读(...) 评论(...) 编辑 收藏
Copyright ©2018 Sdchr
原文地址:https://www.cnblogs.com/hehe54321/p/8877054.html