线段树上二分 别样的线段树
D. Points原题链接:https://codeforces.com/problemset/problem/19/D
开始思路:
看到题目后有一个想法,先将所有坐标进行离散化,在横坐标方向上建立线段树,每个节点维护一个 \(set\) 即对应区间 \(l\) ~ \(r\) 上 \(y\) 轴上的坐标,然后每次增删都可以在 \(O(log^2(n))\) 内完成,然后查询时,对区间进行直接二分,然后每次将对应区间的集合合并后取出,每次有效性检验检查是否存在大于当前查询的 \(y\),直接二分时间复杂度为 \(O(log(n))\),每次取出时间复杂度最坏情况下可 \(O(n)\),每次 \(upper\) _ \(bound\) 查询为 \(O(log(n))\),三者相乘,不出意外直接 \(tle\)了
\(tle\)代码:
#includeusing namespace std; typedef long long ll;typedef pair PII;const int N=2e5+10,mod=998244353;int n,m;vector all,query;vector points;struct Node{ int l,r; set ys;}tr;void build(int u,int l,int r){ if(l==r) tr={l,r}; else{ tr={l,r}; int mid=l+r>>1; build(u 谢谢楼主提供! 感谢,下载保存了 谢谢分享,辛苦了 分享、互助 让互联网精神温暖你我 不错,里面软件多更新就更好了 新版吗?好像是停更了吧。 谢谢分享,试用一下 感谢发布原创作品,程序园因你更精彩 用心讨论,共获提升! 感谢分享,下载保存了,貌似很强大 喜欢鼓捣这些软件,现在用得少,谢谢分享! 谢谢分享,试用一下 收藏一下 不知道什么时候能用到 鼓励转贴优秀软件安全工具和文档! 这个有用。 感谢发布原创作品,程序园因你更精彩 喜欢鼓捣这些软件,现在用得少,谢谢分享! 鼓励转贴优秀软件安全工具和文档! 谢谢分享,试用一下
页:
[1]
2