随笔分类 - 其他-分治
摘要:因为有正睿的课件 就加一下密码 要的话私戳我哈 update:为了方便去掉了qvq几天后再加上
阅读全文
摘要:DAY2模拟被完爆了w 来学一波线段树分治 原来一直拿它口胡其实没写过。。 然鹅这个东西和线段树的关系 就像点分治和点分树一样 并不用建出来 但遍历顺序是一致的 从上到下 从左儿子到右儿子 访问“线段树”的所有节点 每个节点表示一个区间 当然维护的也是区间里的值 这就要求我们维护的东西满足区间加法
阅读全文
摘要:题面 "bzoj" "luogu" 所有事件按时间排序 按值划分下放 把每一个修改 改成一个删除一个插入 对于一个查询 直接查这个段区间有多少合法点 如果查询值大于等于目标值 进入左区间 如果一个查询无解 那么它要求第k大无解 k 路径长 用lca维护即可 cpp include include i
阅读全文
摘要:题面 "bzoj" 其实就是推一下圆的式子 长成这个样子 假设要查询的点是(x, y) 某个圆心是(p, q) $(x p)^2 + (y q)^2 \leq p^2 + q^2$ 变成 $ \frac{2x}{2y}p + \frac{x^2+y^2}{2y} \leq q$ 那么一个点合法就要对
阅读全文
摘要:题面 "洛谷" 和动态逆序对那道题没有什么区别 把一个交换换成两个删除和两个插入 cpp include include include include include using namespace std; const int N = 1e5 + 5; const double eps = 1e
阅读全文
摘要:题面 "luogu" cdq分治入门 注意删的是值不是位置! cpp include include include include using namespace std; const int N = 1e5 + 5; const int inf = 0x3f3f3f3f; struct Node
阅读全文
摘要:题面 "洛谷" 你有一个长度为n的序列,定义这个序列中每个区间的价值是 $Cost(i,j)=Min(Ai...Aj)∗Max(Ai...Aj)∗(j−i+1)Cost(i,j)=Min(A_{i}...A_{j}) Max(A_{i}...A_{j}) (j i+1)$ 其中,$i,j$是区间的两
阅读全文
摘要:之前写过一篇cdq分治模拟树状数组 附上 "链接" 然鹅属于二位偏序欸 三位偏序怎么做呢? 我们把第一位排好序忽略掉 剩下的在分治中用树状数组维护就好啦 大概思路如下: 1. 判边界,下放分治 2. 对当前范围按第二维,左边的第三维值插入树状数组,右边的查询 3. 像归并排序一样归位 代码如下 cp
阅读全文
摘要:```cpp include include include include include include using namespace std; const int N = (int)1e6 + 5; int n, m; struct Q{ int type, id; long long va
阅读全文

浙公网安备 33010602011771号