离线算法
ShɑΙteж
think twice,code once
展开
-
[BZOJ2120] 带修改莫队
[BZOJ2120]查询区间内不同数个数,带修改 O(n^1.666)Code#include<bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define per(i,a,b) for(int i=(a);i>=(b);i--)using namespace std;const i...原创 2019-02-14 18:26:55 · 231 阅读 · 0 评论 -
[BZOJ4241] 回滚莫队
[BZOJ4241]给出n个数,每次询问区间[L,R]内每个数*该数出现次数的最大值 使用回滚莫队 回滚莫队用来维护不可撤销信息比如最大值 在同一个块内右端点递增左端点每次移动到该块的最右边再插入元素 当查询的左端点在一个块内时右端点移动O(n),总共有sqrt(n)个块,总时间复杂度为O(n*sqrt(n)) 左端点每查询一次最多是O(sqrt(n))的时间复杂度,总时间复杂度为O...原创 2019-02-14 21:27:27 · 237 阅读 · 0 评论 -
[SP10707 COT2] 树上莫队
[SP10707 COT2]算法原理懒癌晚期懒得写了Code#include<bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define per(i,a,b) for(int i=(a);i>=(b);i--)using namespace std;const int N=4e5;...原创 2019-02-16 15:56:58 · 206 阅读 · 0 评论 -
[BZOJ 3262陌上花开] CDQ分治
[BZOJ 3262]一个区间的答案是左右两个子区间单独的答案加左右两个子区间之间产生的新贡献,所以就可以分治了 先按第一维排序 分别在每个分治的子区间里按第二维排序,类似归并排序 第三维用树状数组维护即可Code#include<bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);i++)using ...原创 2019-02-17 09:44:37 · 306 阅读 · 0 评论