随笔分类 -  线段树&树状数组

摘要:题意 维护一个01串,一开始全部都是0 3种操作 1.把一个区间都变为1 2.把一个区间都变为0 3.把一个区间的所有数字翻转过来 每次操作完成之后询问区间最小的0的位置 l,r<=10^18 题解 区间操作想到线段树,离散化不用说,l,r太大了。 1,2,3操作非常好维护。 然后在查询中二分查询就 阅读全文
posted @ 2018-07-31 19:26 Xu-daxia 阅读(632) 评论(0) 推荐(0)
摘要:题意 有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。 题解 线段树骚操作,线段树优化建图。 其实提到可以这么操作后,实 阅读全文
posted @ 2018-07-30 21:49 Xu-daxia 阅读(491) 评论(0) 推荐(0)
摘要:题意 不带修改区间第k小。(n<=100000) 题解 建立线段数和vector数组(vector为当前区间排列之后的序列)(归并) 然后对于每一个询问二分答案。 问题就转化为区间有多少数小于等于二分值。 对于我们每一个遍历的区间(线段数的节点)。 若与询问区间不相交return0。 若完全包含于询 阅读全文
posted @ 2018-07-30 20:27 Xu-daxia 阅读(305) 评论(0) 推荐(0)
摘要:题意 给出第一象限的n个点,有m次询问,每次询问一个矩形中的点的个数.(0<=n,m<=500000,0<=xi,yi<=10000000) 题解 一眼望去不可做。 用二位前缀和的思想,一个矩形可以用以坐标轴为一对临边的四个矩形加减得到。 考虑离线,离散化。所以我们要求的只是若干个以坐标轴为一对临边 阅读全文
posted @ 2018-07-22 17:11 Xu-daxia 阅读(229) 评论(0) 推荐(0)
摘要: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 阅读全文
posted @ 2018-07-13 19:17 Xu-daxia 阅读(169) 评论(0) 推荐(0)
摘要: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 阅读全文
posted @ 2018-07-13 16:57 Xu-daxia 阅读(243) 评论(0) 推荐(0)
摘要: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 阅读全文
posted @ 2018-07-13 08:51 Xu-daxia 阅读(209) 评论(0) 推荐(0)