颐港 发表于 2025-6-1 21:36:41

线段树上二分 别样的线段树

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

尸酒岐 发表于 2025-10-19 19:21:09

谢谢楼主提供!

茅香馨 发表于 2025-11-14 01:13:57

感谢,下载保存了

钨哄魁 发表于 2025-12-6 07:46:43

谢谢分享,辛苦了

靳谷雪 发表于 2025-12-23 20:28:32

分享、互助 让互联网精神温暖你我

米嘉怡 发表于 2025-12-25 07:47:11

不错,里面软件多更新就更好了

辗振 发表于 2025-12-25 10:03:14

新版吗?好像是停更了吧。

厂潺 发表于 2025-12-30 16:06:16

谢谢分享,试用一下

遑盲 发表于 2026-1-15 08:18:15

感谢发布原创作品,程序园因你更精彩

晁红叶 发表于 2026-1-15 18:02:45

用心讨论,共获提升!

亢安芙 发表于 2026-1-16 05:35:11

感谢分享,下载保存了,貌似很强大

骆贵 发表于 2026-1-16 16:47:58

喜欢鼓捣这些软件,现在用得少,谢谢分享!

事值 发表于 2026-1-20 00:52:16

谢谢分享,试用一下

宛蛲 发表于 2026-1-21 13:53:55

收藏一下   不知道什么时候能用到

全阳霁 发表于 2026-1-24 10:20:29

鼓励转贴优秀软件安全工具和文档!

袁勤 发表于 2026-1-30 02:53:12

这个有用。

高小雨 发表于 2026-1-30 04:55:54

感谢发布原创作品,程序园因你更精彩

赀倦 发表于 2026-2-2 03:54:09

喜欢鼓捣这些软件,现在用得少,谢谢分享!

宁觅波 发表于 2026-2-4 10:09:09

鼓励转贴优秀软件安全工具和文档!

吟氅 发表于 2026-2-5 04:55:35

谢谢分享,试用一下
页: [1] 2
查看完整版本: 线段树上二分 别样的线段树