![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
主席树
pubgoso
这个作者很懒,什么都没留下…
展开
-
hdu5919 Sequence II
思路:主席树维护区间种类数。需要注意:区间种类数不能由区间端点做差得到;那,倒着建主席树就可以在树上二分找位置了。因为如果正着建树的话,在树上找位置的时候,就会有不在询问区间却产生影响的一些数。#pragma GCC optimize(2)#pragma GCC optimize(3)#include <bits/stdc++.h>using namespace std;const int N=2e5+3;int n,q,tot;int T,cas,ans[N],vis[原创 2020-10-07 16:37:52 · 166 阅读 · 0 评论 -
2020牛客暑期多校训练营(第五场)H.Interval
题目链接思路:固定一个右端点,对于不同左端点的区间 与值,最多只有log个不同的值。那我们枚举右端点,算出所有这样的第一次出现不同值的左端点,然后在主席树上更新一下贡献。注意去重。可以搞一个map来辅助实现上述的操作。#pragma GCC optimize(2)#pragma GCC optimize(3)#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N = 1e5 + 1原创 2020-08-13 11:09:59 · 211 阅读 · 0 评论 -
hdu6621 K-th Closest Distance(二分+主席树)
题目链接大意:给你一个长度为n的数组,m个询问,每次询问给你一个区间[l,r][l,r][l,r],给你一个p设长度为r−l+1r-l+1r−l+1的数组S,其中Si=∣p−al+i−1∣,i∈[1,r−l+1]S_i=|p-a_{l+i-1}|,i\in[1,r-l+1]Si=∣p−al+i−1∣,i∈[1,r−l+1],让你输入数组S的第k小。思路:对给定的数组建一颗主席树;然后每...原创 2019-07-31 21:49:01 · 162 阅读 · 0 评论 -
hdu6681 Rikka with Cake(主席树)
题目链接大意:给你一个矩形区域,((0,0)−(n,m))((0,0)-(n,m))((0,0)−(n,m)),现在有k条直线,每条直线都是从一个点出发到上下左右四个方向之一。问你这个区域被分成了多少块。思路:稍微观察即可发现,分成的区域等于直线交点个数+1。我们对L,RL,RL,R方向的对纵坐标分开离散化建立主席树(横坐标放一起离散化),然后每次遍历U,DU,DU,D方向的直线来在主席树...原创 2019-08-19 18:15:18 · 179 阅读 · 0 评论 -
Codeforces Round #567 (Div. 2) D. Irrigation(思维+主席树)
题目链接大意:m个城市,给你前n年的举办城市,之后的每一年都会让举办次数最少且标号最小的城市举办一次,给你q组询问让你求出第k年的举办城市。思路:首先,对m个城市按举办次数从小到达排序,建一颗主席树,然后每次举办的城市显然是在一些举办次数相同且最小的城市中轮换,那我们就预处理出每种等级的城市升级到下一个等级一共需要多少次(按举办次数分等级),然后每次询问就二分一下是从哪个等级升过来的,然后在主...原创 2019-09-20 18:35:32 · 196 阅读 · 0 评论