[HEOI2013] Segment

告别以太网瓶颈:手把手教你为AI训练集群搭建InfiniBand网络(以NVIDIA DGX A100/H100为例) 本文详细指导如何为AI训练集群搭建InfiniBand网络,解决以太网瓶颈问题,特别针对NVIDIA DGX A100/H100系统。通过硬件选型、网络架构设计和性能调优,显著提升多机多卡训练效率,适用于大规模模型训练场景。 阅读详情

传送门

这道题其实是一个李超线段树的模板题
李超线段树( l i c h a o   s e g m e n t   t r e e lichao\ segment\ tree lichao segment tree),用来解决多个函数在某坐标位置上的最值的问题,其实李超线段树其实是线段树的一类题目的思想,而且比较好理解,但是极难写对


直接做显然不太好做,我们考虑标记永久化,让每个点储存的是当前区间的中点的优势最大线段,然后我们查询的时候查询所有包含 x = k x=k x=k的区间,然后再找优势最大的线段就可以了

然后考虑对于一个新加入的线段如何更新

首先只有一个区间完整的被一条线段覆盖才能被更新
然后我们对于各种情况分类讨论

1.如果当前区间还没有线段,直接加入,然后结束,而不用下放,因为我们

2.如果当前线段在区间内全部的部分都在当前优势最大的线段的下方
在这里插入图片描述
直接 r e t u r n return return掉,不管他

3.如果当前线段的在区间的全部部分全部低于当前优势最大线段
在这里插入图片描述
用当前的线段覆盖原来的优势最大线段

4.如果当前线段和原来优势线段在这一段区间内有交点,分四种情况进行讨论
(1)新线段的左端点高于原优势最大线段,并且交点位于区间中点左侧

在这里插入图片描述
他不能成为这个区间的优势最大线段
所以尝试拿这个线段更新左子区间
(2)新线段的左端点高于原优势最大线段,并且交点位于区间中点右侧

在这里插入图片描述
那么他在这个区间就是最强的了,拿他覆盖原来的线段,但是注意这里,因为原来的优势最大的线段在交点右边还有可能是最好的,所以尝试拿原来的做优线段去更新右子树
(3)新线段的右端点高于原优势最大线段,并且交点位于区间中点右侧

在这里插入图片描述
同理,利用新线段更新右子区间
(4)新鲜度胺的右端点高于原优势最大线段,并且交点位于区间中点左侧
在这里插入图片描述
和(2)同理,覆盖当前区间,拿优势最大线段尝试更新左子区间


然后就是代码了,代码细节还是挺多的,还是挺恶心的(

#include <bits/stdc++.h>
using namespace std;

# define Rep(i,a,b) for(int i=a;i<=b;i++)
# define _Rep(i,a,b) for(int i=a;i>=b;i--)
# define RepG(i,u) for(int i=head[u];~i;i=e[i].next)

typedef long long ll;

const int N=1e5+5;

template<typename T> void read(T &x){
   x=0;int f=1;
   char c=getchar();
   for(;!isdigit(c);c=getchar())if(c=='-')f=-1;
   for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+c-'0';
    x*=f;
}

int n,segt;
int lastans;
struct seg{
    double k,b;
    double func(int x){
        return k*x+b;
    }
}a[N];

struct node{
    int l,r;
    int id;
}lic[N<<2];

# define lc (u<<1)
# define rc (u<<1|1)

int lichaomax(int x,int y,int p){
    if(!x)return y;
    if(!y)return x;
    return a[x].func(p)>a[y].func(p)?x:y;
}

void build(int u,int l,int r){
    lic[u].l=l,lic[u].r=r;
    if(l==r)return;
    int mid=l+r>>1;
    build(lc,l,mid);
    build(rc,mid+1,r);
}

void update(int u,int l,int r,int id){
    int mid=lic[u].l+lic[u].r>>1;
    if(l<=lic[u].l&&r>=lic[u].r){
        if(!lic[u].id){lic[u].id=id;return;}
        double yl=a[lic[u].id].func(lic[u].l),yr=a[lic[u].id].func(lic[u].r);
        double xl=a[id].func(lic[u].l),xr=a[id].func(lic[u].r);
        if(xl<=yl&&xr<=yr)return;
        if(xl>=yl&&xr>=yr){lic[u].id=id;return;}
        double cross=(a[id].b-a[lic[u].id].b)/(a[lic[u].id].k-a[id].k);
        if(xl>=yl){
            if(cross<=mid)update(lc,l,r,id);
            else update(rc,l,r,lic[u].id),lic[u].id=id;
        }
        else{
            if(cross> mid)update(rc,l,r,id);
            else update(lc,l,r,lic[u].id),lic[u].id=id;
        }
        return;
    }
    if(l<=mid)update(lc,l,r,id);
    if(r>mid)update(rc,l,r,id);
}

int query(int u,int x){
    if(lic[u].l==lic[u].r)return lic[u].id;
    int mid=lic[u].l+lic[u].r>>1;
    int res=lic[u].id;
    if(x<=mid)res=lichaomax(res,query(lc,x),x);
    else res=lichaomax(res,query(rc,x),x);
    return res;
}

int main()
{
    read(n);
    build(1,1,40000);
    Rep(i,1,n){
        int opt;
        read(opt);
        if(!opt){
            int k;
            read(k);
            k=(k+lastans-1)%39989+1;
            lastans=query(1,k);
            printf("%d\n",lastans);
        }
        else{
            int x1,y1,x2,y2;
            read(x1),read(y1),read(x2),read(y2);
            x1=(x1+lastans-1)%39989+1;
            x2=(x2+lastans-1)%39989+1;
            y1=(y1+lastans-1)%1000000000+1;
            y2=(y2+lastans-1)%1000000000+1;
            segt++;
            if(x1==x2){
                a[segt]=(seg){0,max(y1,y2)};
                update(1,x1,x1,segt);
            }
            else{
                a[segt].k=1.*(y2-y1)/(x2-x1);
                a[segt].b=1.*(y1-1.*x1*a[segt].k);
                update(1,min(x1,x2),max(x1,x2),segt);
            }
        }
    }
    return 0;
}

图片转载自♗Wendigo♝ 的博客

无人机中继传输数据链技术,(无人机+自组网)远距离传输技术实现详解 无人机中继传输数据链技术是指利用无人机作为空中移动中继节点,在需要通信的区域上空悬停或移动,以建立和维护通信链路,从而扩展通信范围、提高通信质量和灵活性。1. 通信链路:是无人机中继通信的重要组成部分,包括源节点到中继节点的链路和中继节点到目标节点的链路。同时,它还支持空中到地面的通信,距离大于100km。总的来说,无人机中继传输数据链技术和(无人机+自组网)远距离传输技术都是现代无人机通信领域的重要技术,它们的应用极大地扩展了无人机的通信范围和灵活性,为各种应用场景提供了强有力的支持。 阅读详情

相关推荐

从MIPS汇编到C语言:手把手教你用Mars模拟器理解指令集(附实战代码)

本文详细介绍了如何使用Mars模拟器从MIPS汇编过渡到C语言编程,通过实战代码解析ADD、LW、BEQ等指令集与C语言结构的对应关系。内容涵盖环境搭建、算术运算、内存访问、条件分支及函数调用等核心概念,帮助读者深入理解MIPS指令分类和计算机底层运行机制。

weixin_26821003的博客 357

[Heoi2013]Segment

Description要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段。记第i条被插入的线段的标号为i。 2.给定一个数k,询问与直线 x = k相交的线段中,交点最靠上的线段的编号。 Input第一行一个整数n,表示共n 个操作。 接下来n行,每行第一个数为0或1。 若该数为 0,则后面跟着一个正整数 k,表示询问与直线 x = ((k +lastans–1)%3

Wolfycz的博客 435

Cocos Creator3.5.2使用Spine切换皮肤

3、然后获取当前spine中是否有皮肤数据,如果spine连皮肤数据都没有,接着写可能会error,这里的 skins[skin],是判断皮肤列表中是否有需要更换的皮肤。2、因为spine往往意味着异步加载,换肤时也经常出现频繁异步的情况,所以下一步我们要可以判断当前spine组件里是否已经加载好了spine文件。换肤前隐藏好需要换肤的节点,避免穿帮;官网文档的换肤流程太简化,对于实际使用来说会有各种各样的问题。1、首先获取对应的spine组件。这里的skin自然是外部传入的需要换肤的皮肤名。

tc654321的博客 1817

[HEOI2013]Segment【李超线段树】

题目链接 有N次操作,强制在线,每次要么查询时候的与已有线段的最大交点值的对应线段序号,要么就是插入一个线段。 于是,就是一个很明显的一个李超线段树了,用永久化标记来进行操作,当插入对应区间的时候,利用它和已有的覆盖线段来进行比较,我们可以知道它们的关系。 #include <iostream> #include <cstdio> #include <cmath> #include <string> #include <cstring&g..

既然弱小,就只顾变强就是了 294

NTFS分区变成RAW别乱修!正确数据恢复与修复方法详解

文件系统是操作系统管理存储数据的核心机制,NTFS作为Windows主流文件系统,一旦分区识别异常,常会显示为RAW格式。分区变RAW通常意味着文件系统入口信息损坏,而非数据物理消失,但若采用错误的修复方式,如直接对RAW分区执行chkdsk /f,可能因系统无法正确识别文件系统结构,导致写入操作落在错误偏移位置,二次破坏本可恢复的数据。正确的处理思路是:先停止一切写入操作,通过扇区级镜像备份保留原始现场,再分析DBR、分区表及$MFT状态,依据诊断结果选择修复或深度扫描恢复。实际排查中,常见问题如DBR记

weixin_31155097的博客 134

逆向小记 bd-ticket-guard-client-cert | bd-ticket-guard-client-data 通过现象看本质

依然没什么花哨的直接解析出来,既然这是个X509证书,那么要么是服务器下发,要么是自己生成喽,但是如果是本地直接生成,那服务器还校验个鬼哦!既然是服务器下发的,那服务器又是怎么校验这个证书是自己下发的呢,这就要讲到CA验证了,首先根据上图我们发现证书的Issuer"(颁发者)是。怎么来的呢,因为涉及到逆向咱就不讲了,其实也是涉及到非对称加密的,就是客户端用私钥去签名数据,服务器用上传过去的证书公钥验签的过程!当服务器收到这个证书的时候,会做几件事,首先用自己的公钥解开签名获得解密后的证书hash。

2503_90751789的博客 1205

[学习笔记][HEOI2013]BZOJ3165 Segment - 超哥线段树

传送门 题解:超哥线段树 先考虑直线L。 首先,假设当前线段树上区间的直线是L2,如果L完全在L2的上面或者L2完全在L的上面 那么把其中一个舍弃,递归结束。 否则求一下两直线交点。为了方便起见,把左端点比较小的记作L1,另一条记作L2。 求一下两条直线的交点。如果它小于等于mid,说明L1在右面的区间上完全覆盖了L2,因此当前区间保存L1,把L2下传到左区间。 否则要把L1下放到右

Mys_C_K的博客 918

逆向工程师视角:拆解DataDome滑块验证码的3层防护机制与绕过思路

本文从逆向工程师视角,深入剖析DataDome滑块验证码的三层核心防护机制。第一层通过动态加密参数实现会话绑定与抗重放;第二层采集TLS指纹、鼠标轨迹动力学等多维行为数据进行一致性验证;第三层则是基于机器学习的后端异步风险决策引擎。文章不仅拆解了其技术原理,更分享了模拟、钩取等超越单纯工具调用的底层分析与绕过思路。

f6g7h8i9j的博客 730

【bzoj3165】[Heoi2013]Segment 神奇的线段树

好神奇的线段树呀,第一次接触这种题。 http://www.cnblogs.com/idy002/p/4315959.html 对x坐标建一棵线段树,每个节点记录一下覆盖这个区间的是哪条线段。 插入一条线段, 如果线段没有覆盖当前的区间,那么递归它的儿子。 如果线段覆盖了当前的区间, 如果当前区间没有被线段覆盖,那么就直接更新。 如果当前区间被线段覆盖了,如果两个线段没有交点,那

Oxer的专栏 2104

别再硬拔了!用这3个终端命令轻松搞定Mac上移动硬盘‘被程序占用’的问题

本文介绍了3个终端命令解决Mac上移动硬盘‘被程序占用’的问题,包括使用`diskutil list`定位硬盘、`lsof`查找占用进程以及`diskutil unmount`安全卸载。这些方法能有效避免数据风险,提升操作效率,特别适合开发者和技术爱好者。

weixin_33507732的博客 292

全新DEIM有效涨点改进目录 | 本专栏持续更新500+篇内容 | 包含各种顶会顶刊卷积、注意力、特征融合模块、有效特征聚合提取模块,上采样模块、下采样模块,二次创新模块、独家创新等几百种创新点改进

🚀【CVPR2025DEIM改进专栏速览】🔥 专栏提供500+篇目标检测创新改进方案,涵盖卷积/注意力/特征融合等创新改进点,均源自顶会论文及实战经验。支持多领域应用(工业/医疗/遥感等),配套完整教程和答疑服务。亮点包括: 1️⃣ 持续更新SOTA模型改进方案 2️⃣ 小白友好型实验操作指南 3️⃣ 跨学科科研支持(已助非计算机专业发表论文) 4️⃣ 提供虚拟环境配置方案。 订阅可获完整项目代码及交流群服务,适合研究生科研论文改进需求。价格呈上涨趋势,早订更优惠!

Ai缝合怪、助力小伙伴高效发论文 2035

bzoj 3165: [Heoi2013]Segment 动态凸壳

3165: [Heoi2013]Segment Time Limit: 40 SecMemory Limit: 256 MBSubmit: 202Solved: 89[Submit][Status] Description 要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段。记第i条被插入的线段的标号为i。 2.给定一个数k,询问...

alex151194310的博客 152

SAP CDS View association 的工作原理,与数据库传统 join 操作的区别讲解

笔者前一篇教程,介绍了 SAP CDS View 里如何创建 association:本文就来一一对这些问题进行解答。首先我们来研究如何消费创建好的 SAP CDS View 中的 association 数据。在上图 ABAP Development Tool 里展示的 CDS View 界面,点击 F8 快捷键,进入 Data Preview 即数据预览界面。我们随便选中一条行项目,右键,发现右键菜单里,赫然有一条的菜单项。看来这个功能肯定和 association 相关了。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 996

【BZOJ3165】[HEOI2013]Segment(李超线段树)

【BZOJ3165】[HEOI2013]Segment(李超线段树) 题面 BZOJ 洛谷 题解 似乎还是模板题QwQ #include<iostream> #include<cstdio> #include<cmath> using namespace std; #define MAX 100100 #define lson (now<<1) #d...

weixin_30483013的博客 156

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

BZOJ3165: [Heoi2013]Segment【李超线段树】

3165: [Heoi2013]Segment 李超线段树板子题。 对一次函数进行分治处理。 #include<cstdio> #include<algorithm> #define EXP 1e-8 #define N9 1000000000 using namespace std; const int MAXN=100005; struct Seg{ double K...

XSamsara的博客 AFO 211

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

BZOJ3165 Heoi2013 Segment

3165: [Heoi2013]Segment Time Limit: 40 Sec Memory Limit: 256 MB Submit: 616 Solved: 253 [Submit][Status][Discuss] Description 要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段。记第i条被插入的线段的标号为i。 2.给定一个数k,询问与直线

苦鬼·。 332

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

3165: [Heoi2013]Segment

3165: [Heoi2013]Segment Time Limit: 40 Sec  Memory Limit: 256 MB Submit: 428  Solved: 169 [Submit][Status][Discuss] Description 要求在平面直角坐标系下维护两个操作:  1.在平面上加入一条线段。记第i条被插入的线段的标号为i。  2.给定一个数k,询问与

CRZbulabula的博客 660

[HEOI2013]Segment

Description 要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段。记第i条被插入的线段的标号为i。 2.给定一个数k,询问与直线 x = k相交的线段中,交点最靠上的线段的编号。 Input 第一行一个整数n,表示共n 个操作。 接下来n行,每行第一个数为0或1。 若该数为 0,则后面跟着一个正整数 k,表示询问与直线 x = ((k +lastans–1)%399...

a5163273的博客 186

Bzoj 3165 [Heoi2013]Segment题解

3165: [Heoi2013]Segment Time Limit:40 SecMemory Limit:256 MBSubmit:668Solved:276[Submit][Status][Discuss] Description 要求在平面直角坐标系下维护两个操作:1.在平面上加入一条线段。记第i条被插入的线段的标号为i。2.给定一个数k,询问与直线x =...

weixin_33890499的博客 140

[BZOJ3165][HEOI2013]Segment(不下放标记的线段树)

题目: 我是超链接 题解: 这个线段遮挡的和那个BZOJ1568一样啊,除了给了一个范围,这样需要自己算delta 注意他给的有可能是x0=x1但是y0!=y1,这个时候给y0,y1取max。。。 代码: #include &lt;cstdio&gt; #include &lt;iostream&gt; using namespace std; const int sb=1e9; ...

薇小薇 280

【HEOI2013】Segment

Description要求在平面直角坐标系下维护两个操作: 在平面上加入一条线段。记第 i条被插入的线段标号为 i。 给定一个数 k,询问与直线 x = k相交的线段中,交点最靠上的线段的编号。 对于 100% 的数据, 1 ≤ n ≤ 10^5, 1 ≤ k, x0, x1 ≤ 39989, 1 ≤ y0 ≤ y1 ≤ 10^9。线段树Get到线段树新姿势,听说叫超哥线段树(:з)∠) 线段一

LYD729 489

BZOJ3165: [Heoi2013]Segment

3165: [Heoi2013]Segment Time Limit: 40 Sec Memory Limit: 256 MB Submit: 939 Solved: 387 [Submit][Status][Discuss] Description 要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段。记第i条被插入的线段的标号为i。 2.给定一个数k,询问与直线 x = k...

weixin_30596343的博客 83

BZOJ 3165: [Heoi2013]Segment

3165: [Heoi2013]Segment Time Limit:40 SecMemory Limit:256 MBSubmit:465Solved:187[Submit][Status][Discuss] Description 要求在平面直角坐标系下维护两个操作:1.在平面上加入一条线段。记第i条被插入的线段的标号为i。2.给定一个数k,询问与直线x =...

weixin_30399871的博客 106

李超线段树 [Heoi2013]Segment

问题 D: [Heoi2013]Segment 时间限制: 4 Sec 内存限制: 256 MB 题目描述 要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段。记第i条被插入的线段的标号为i。 2.给定一个数k,询问与直线 x = k相交的线段中,交点最靠上的线段的编号。 输入第一行一个整数n,表示共n 个操作。 接下来n行,每行第一个数为0或1。 若该数为 0,则

蒟蒻QTY 537
上一篇: 扩展中国剩余定理
下一篇: 2020.4.18集训总结
NephrenRuqInsania
博客等级 码龄8年 20粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值