首页 > TAG信息列表 > P4848
题解 P4848/LOJ6016/BZOJ4605【崂山白花蛇草水】
简化题面 维护一个二维平面,支持两种操作 \(1\),插入一个节点坐标为\((x,y)\)且权值为\(v\) \(2\),查询矩形范围为\(x_0,x_1,y_0,y_1\)内第\(k\)大的节点权值为多少,若不够\(k\)个则输出NAIVE!ORZzyz. 强制在线。 数据范围\(n\le500000\),\(q\le100000\),\(1\le x, y\le n\),\(1\le v\leP4848 崂山白花蛇草水
题面 • 平面是二维的,第 K 大是相对的。 • 单纯的 K- D 似乎并不能解决(方正我不会)。 • 第 K 大和二分是紧密相关的。 • 二分之后的判定就是一个二维数点问题。 • 所以我们可以线段树套 K-D tree 。 1 #include<bits/stdc++.h> 2 #define ls son[u][0] 3 #define rs son[uluogu P4848 崂山白花蛇草水
https://www.luogu.org/problemnew/show/P4848 我的数据结构大概已经废了。 外层权值线段树内层kdtree,外层线段树上二分答案。 码数据结构一时爽,码完debug火葬场。 要rebuild时少写了个else什么的 插入不upd下去的时候没把值更新完比如sz什么的 比较Int的时候把外层数组套多套少什