n个数,区间查询[L,R]出现了几种数字 时间复杂度$O(n\sqrt n)$ 莫队的基本操作就是把n个数进行分块,每一块有$\sqrt n$个,有$\sqrt n$块,然后离线查询,把查询进行排序,按照分块位置排序,如果在同一个分块,那么就按照右区间排序,然后对于每一个排序进行暴力遍历即可 1. ...
分类:
其他好文 时间:
2020-02-21 14:38:18
阅读次数:
57
记录区间颜色分布,查询区间颜色种类
... ...
分类:
其他好文 时间:
2020-02-19 14:47:05
阅读次数:
79
题目链接: https://www.acwing.com/problem/content/1272/ 题解: 线段树模板题,单点求和、区间查询都可 AC代码: #include <cstdio> #include <iostream> #include <algorithm> #include <c ...
分类:
其他好文 时间:
2020-02-16 22:21:04
阅读次数:
69
"题目链接" ac代码(注意字符读入前需要注意回车的影响) ...
分类:
编程语言 时间:
2020-02-16 01:39:45
阅读次数:
74
这样的数据结构称作树状数组,它支持O(logN)的单点修改和区间查询,效率高并且代码简洁,缺点在于适用范围不如线段树广。不难看出(雾),tree[i]表示a[i]及之前的 lowbit(i)个 数,定义lowbit(i)等于取i的二进制中最后一个'1'表示的大小观察发现(。),修改a[i]只需更新包 ...
分类:
编程语言 时间:
2020-02-16 01:10:00
阅读次数:
72
//add,懒标记,给以当前节点为根的子树中的每一个点加上add(不包含根节点) // #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef ...
分类:
其他好文 时间:
2020-02-11 09:22:13
阅读次数:
70
给出0~n-1的一个排列,可以整体移动,求逆序对最小值 把数字num[i]的加入,等价于树状数组的第n-num[i]位加1 因为num[i]是第 (n-1)-num[i]+1=n-num[i]大的数字,产生逆序对,只可能在其之前已经插入了数字,此时直接区间查询即可 1 #include <set> ...
分类:
编程语言 时间:
2020-02-10 09:33:02
阅读次数:
50
单点修改+区间查询=树状数组 空间复杂度O(n) 时间复杂度O(mlogn) 1 #include <set> 2 #include <map> 3 #include <cmath> 4 #include <queue> 5 #include <vector> 6 #include <cstdio> ...
分类:
编程语言 时间:
2020-02-09 20:34:15
阅读次数:
79
毕生所学。 1 const int N = 2e5 + 10; 2 #define lson rt << 1 // == rt * 2 左儿子 3 #define rson rt << 1 | 1 // == rt * 2 + 1 右儿子 4 #define int_mid int mid = tr ...
分类:
其他好文 时间:
2020-02-09 14:41:56
阅读次数:
166
原理很简单,利用差分知识做的,只能单点查询,在性能上优于线段树,但没有区间查询功能。 1 #include<bits/stdc++.h> 2 #define f(i,a,b) for(int i=a;i<=b;i++) 3 using namespace std; 4 5 const int N=5 ...
分类:
编程语言 时间:
2020-02-07 13:08:12
阅读次数:
82