随笔分类 - 线段树&树状数组
摘要:题意 维护一个01串,一开始全部都是0 3种操作 1.把一个区间都变为1 2.把一个区间都变为0 3.把一个区间的所有数字翻转过来 每次操作完成之后询问区间最小的0的位置 l,r<=10^18 题解 区间操作想到线段树,离散化不用说,l,r太大了。 1,2,3操作非常好维护。 然后在查询中二分查询就
阅读全文
摘要:题意 有n个点,q个询问,每次询问有一种操作。操作1:u→[l,r](即u到l,l+1,l+2,...,r距离均为w)的距离为w;操作2:[l,r]→u的距离为w;操作3:u到v的距离为w;求起点到其他点的最短距离,到达不了输出-1。 题解 线段树骚操作,线段树优化建图。 其实提到可以这么操作后,实
阅读全文
摘要:题意 不带修改区间第k小。(n<=100000) 题解 建立线段数和vector数组(vector为当前区间排列之后的序列)(归并) 然后对于每一个询问二分答案。 问题就转化为区间有多少数小于等于二分值。 对于我们每一个遍历的区间(线段数的节点)。 若与询问区间不相交return0。 若完全包含于询
阅读全文
摘要:题意 给出第一象限的n个点,有m次询问,每次询问一个矩形中的点的个数.(0<=n,m<=500000,0<=xi,yi<=10000000) 题解 一眼望去不可做。 用二位前缀和的思想,一个矩形可以用以坐标轴为一对临边的四个矩形加减得到。 考虑离线,离散化。所以我们要求的只是若干个以坐标轴为一对临边
阅读全文
摘要:1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 #include<cstdio> 6 using namespace std; 7 const int N=500100; 8 in
阅读全文
摘要:1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 #include<cmath> 6 using namespace std; 7 const int N=200020; 8 int
阅读全文
摘要:1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 #include<cmath> 6 using namespace std; 7 const int N=101000; 8 int
阅读全文

浙公网安备 33010602011771号