poj3667 Hotel(线段树 区间合并)

KDD 2025 | 人大团队提出多任务贝叶斯联邦学习算法,同时处理分类和回归 ©PaperWeekly 原创 ·作者 |吕俊良单位 |中国人民大学统计学院本文介绍了中国人民大学统计学院的一篇关于多任务贝叶斯联邦学习的文章“Task Diversity in Bayesian Federated Learning: Simultaneous Processing of Classification and Regression”,本文被 KDD 2025 接收,代码已经... 阅读详情

题意

n个房间m次操作

操作1:给一个len,要求输出有连续len空房的最小起始下标start,并将[start,start+len-1]的房间置满

操作2:给一个start,一个len,将[start,start+len-1]的房间都置空

思路来源

https://www.cnblogs.com/HDMaxfun/p/5697156.html

https://blog.youkuaiyun.com/piaoyi0208/article/details/8149804

以上两篇是针对本题的代码 还比较详细

https://blog.youkuaiyun.com/sunyutian1998/article/details/79618316

关于区间合并 安利第三篇 通俗易懂 让我彻底学会了区间合并而不是背代码

题解

p编号代表的这段区间

L代表左起最长的空房间长度 R代表右起最长的空房间长度 dat代表区间最长不论位置的空房间长度

//视题目而定可以改成连续0的长度 连续1的长度等 

cov代表标记 -1不需要操作 0全赋空 1全赋满 

pushup的时候

父亲的L至少为左子的L,如果左子贯穿整个区间,就可以加上右子的L

父亲的R至少为右子的R,如果右子贯穿整个区间,就可以加上左子的R

而父亲的dat至少为左子的dat、右子的dat的最大值

还有一种情况是左子的R和右子的L在中间拼接在一起形成的值

三者取大,为dat最终的值

然后就是全赋0和全赋1的操作了

区间合并:

①连续1的数量

②满足1的个数的最左位置

③区间赋0,区间赋1

学了之后有明显的套路QAQ

心得

要学各种各样的线段树啊

以上只是个线段树入门基础

鸡鸭油!

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm> 
#include<bitset>
using namespace std;
typedef long long ll;
const int maxn=5e4+10;
int n,m;
//p编号代表的这段区间
//L代表左起最长 R代表右起最长 dat代表区间最长不论位置 
//cov代表标记 -1不需要操作 0全赋空 1全赋满 
int L[5*maxn],R[5*maxn],dat[5*maxn],cov[5*maxn];
void build(int p,int l,int r)
{
	dat[p]=L[p]=R[p]=r-l+1;
	cov[p]=-1;
	if(l==r)return;
	int mid=(l+r)>>1;
    build(p<<1,l,mid);
    build(p<<1|1,mid+1,r);
}
void pushdown(int p,int l,int r)
{
	if(cov[p]!=-1) 
	{
		int mid=(l+r)>>1;
		cov[p<<1]=cov[p<<1|1]=cov[p];
		dat[p<<1]=L[p<<1]=R[p<<1]=cov[p]?0:mid-l+1;//0全赋空 1全赋满 
		dat[p<<1|1]=L[p<<1|1]=R[p<<1|1]=cov[p]?0:r-mid;//0全赋空 1全赋满
		cov[p]=-1; 
	}
}
void pushup(int p,int l,int r)
{
	int mid=(l+r)>>1;
    dat[p]=max(dat[p<<1],dat[p<<1|1]);
    dat[p]=max(dat[p],R[p<<1]+L[p<<1|1]);
    L[p]=L[p<<1];
    if(L[p<<1]==mid-l+1)L[p]+=L[p<<1|1];
    R[p]=R[p<<1|1];
    if(R[p<<1|1]==r-mid)R[p]+=R[p<<1];
}
void update(int p,int l,int r,int ql,int qr,int c)
{
	if(ql<=l&&r<=qr)
	{
		dat[p]=L[p]=R[p]=c?0:r-l+1;
		cov[p]=c;
		return;
	}
	pushdown(p,l,r);
	int mid=(l+r)>>1;
	if(ql<=mid)update(p<<1,l,mid,ql,qr,c);
	if(qr>mid)update(p<<1|1,mid+1,r,ql,qr,c);
	pushup(p,l,r);
}
int ask(int p,int l,int r,int num)
{
	if(l==r)return l;//左对齐之后递归到端点
	pushdown(p,l,r); 
	int mid=(l+r)>>1;
	if(dat[p<<1]>=num)return ask(p<<1,l,mid,num);//左 
	else if(R[p<<1]+L[p<<1|1]>=num)return mid-R[p<<1]+1;//拼凑 
	else return ask(p<<1|1,mid+1,r,num);//右 
}
int main()
{
	while(~scanf("%d%d",&n,&m))
	{
		build(1,1,n);
		int op;
		while(m--)
		{
			scanf("%d",&op);
			if(op==1)
			{
				int len;
				scanf("%d",&len);
				if(dat[1]<len)puts("0");//本店最大的间 
				else
				{
				 int start=ask(1,1,n,len);
				 printf("%d\n",start);
				 update(1,1,n,start,start+len-1,1);
			    }
		    }
			else if(op==2)
			{
			    int start,len;
			    scanf("%d%d",&start,&len);
			    update(1,1,n,start,start+len-1,0);
			} 
		}
    }
	return 0;
}

 

【制作100个unity实战之2】实现一款简单的FPS游戏 你将学到: fps武器脚本 基础瞄准功能 僵尸敌人AI 巡逻范围 攻击间 搜寻半径 追击 枪声吸引周围的僵尸 击中僵直效果 阅读详情

相关推荐

【MIT-BEVFusion代码解读】第四篇:融合特征fuser和解码特征decoder

的大小,实际上源代码也是这么做的。最后将得到两个分支的特征进行。,第一个特征使用卷积降低通道数即可,第二个则需要反卷积来提升。所以backbone只有两个分支,都是5个卷积模块组成。的长和宽都减半至90,然后在经过5个相同的。将通道降至128,后面再接5个相同的。,将通道数128上至256,并且将。特征进行融合,这里使用的。部分由两部分组成,分别是。,这个分支首先经过第一个。,然后再卷积得到 =>提取特征,最后得到特征。得到了两个大小不同的。

非晚非晚的博客 2958

POJ 3667 Hotel 【线段树 区间合并 + Lazy-tag】

Hotel Time Limit: 3000MS Memory Limit: 65536K 链接:POJ 3667     Description The cows are journeying north to ThunderBay in Canada to gain cultural enrichme

Fighting! 2366

Ubuntu20.04系统笔记本网卡AX211无法找到wifi问题

之前电脑的系统是18.04基本上安装好了系统,可以直接连上wifi,在买了拯救者y9000p2022版本之后,因为网卡太新,安装ubuntu18.04或者20.04之后会没有wifi连接,非常不方便。于是上网找了各种帖子去解决这个问题。具体实现有所不同。 主要参考了这个帖子来解决的:http://t.csdn.cn/7807R 首先: sudo apt install flex bison 然后: git clone https://github.com/intel/backpor.

weixin_42825962的博客 1万+

【题解】poj3667(2018-07-28校赛 线段树入门2 E) 线段树

题目 题目链接 思路参考了大佬题解 #include&amp;lt;cstdio&amp;gt; #include&amp;lt;algorithm&amp;gt; using namespace std; #define lc o&amp;lt;&amp;lt;1 #define rc o&amp;lt;&amp;lt;1|1 const int N=5e4+10; int n,m; int mx[N&amp;lt;&amp

翻过这座山,他们就会听到你的故事 339

STM32之W5500网络通信_w5500 profinet

*初始化8个socket*/setSHAR(ConfigMsg.mac);/*配置Mac地址*/setSUBR(ConfigMsg.sub);/*配置子网掩码*/setSIPR(ConfigMsg.lip);/*配置Ip地址*/setGAR(ConfigMsg.gw);/*配置默认网关*/setRTR(2000);/*设置溢出时间值*/setRCR(3);/*设置最大重新发送次数*/

2501_90250923的博客 1461

CanMV K230实战:用MicroPython玩转AI视觉识别(附完整代码)

本文详细介绍了如何使用MicroPython在CanMV K230开发板上实现AI视觉识别,包括环境搭建、摄像头配置、模型部署及优化技巧。通过实战案例(如智能门禁和工业分拣机器人),展示如何快速开发低门槛的嵌入式AI应用,特别适合初学者和嵌入式开发者。

x8y9z0的博客 1146

Hotel(线段树 + 区间合并)

Hotel Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 11495   Accepted: 4949 Description The cows are journeying north to Thunder Bay in Canada to gain cultura...

Simone chou... 362

YOLOv10改进策略【注意力机制篇】| 2024 蒙特卡罗注意力(MCAttn)模块,提高小目标的关注度

本文记录的是基于蒙特卡罗注意力(MCAttn)模块的YOLOv10目标检测改进方法研究。利用提高的跨尺度特征提取能力,使模型能够更好地传递和融合提取的多尺度特征,提高对小目标的关注度。Exploiting Scale-Variant Attention for Segmenting Small Medical Objects使用一种基于随机采样的池化操作来生成尺度无关的注意力图。它从三个不同尺度(3×33×33×3、2×22×22×2和1×11×11×1,即池化张量)中随机选择一个1×11×11×1注意力图

Limiiiing的博客 2189

poj 3667【线段树-区间合并】

Hotel Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 5052   Accepted: 2021 Description The cow

lyt9469的专栏 441

ABAP 平台注册 OAuth 2.0 Client 的完整实践指南(覆盖 Authorization Code、SAML Bearer 与 PKCE)

本文详述了在ABAP平台上注册入站OAuth 2.0 Client的关键技术和操作要点。文章面向SAP技术人员,系统梳理了前置条件(TLS/SSL、技术用户、授权对象)、配置路径(SOAUTH2事务)、授权类型差异(授权码、SAML Bearer、PKCE)等重要内容。特别强调入站与出站配置的区别,并提供了保密客户端和公有客户端的配置指引。文中所有事务码和参数均参考SAP官方文档,包含多个实用案例和权限配置建议,为ABAP系统作为OAuth 2.0授权服务器的实施提供全面指导。

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

【实战篇导读】四足机器人运动控制导读

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对四足机器人运动运动控制系统及相关算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章主要介绍了波士顿spot机器人的发展历史、四足机器人的硬件系统及电机执行器组成包括硬件系统、关节电机执行器,机载传感器机处理器及电气连接等。概述了四足机器人规划控制、感知、定位及局部地图的相关算法方向。

qq_35635374的博客 679

【bzoj4530】【BJOI2014】【大融合】【dfs序+线段树合并+并查集】

Description 小强要在N个孤立的星球上建立起一套通信系统。这套通信系统就是连接N个点的一个树。 这个树的边是一条一条添加上去的。在某个时刻,一条边的负载就是它所在的当前能够 联通的树上路过它的简单路径的数量。 例如,在上图中,现在一共有了5条边。其中,(3,8)这条边的负载是6,因 为有六条简单路径2-3-8,2-3-8-7,3-8,3-8-7,4-3-8,4-3-8-

sunshinezff的专栏 906

CentOS 7 Linux yum 安装 Docker,解决 Docker 镜像拉取失败问题

本文详细介绍了在 CentOS 7 系统上通过 yum 安装 Docker 的完整流程,包括卸载旧版本、配置阿里云国内镜像源、安装 Docker 及其组件、设置日志限制等关键步骤。针对国内用户常见的 Docker 镜像拉取失败问题,提供了两种实用解决方案:配置镜像加速器或通过代理访问官方源,并附带验证方法与排错指南,帮助读者高效完成 Docker 环境部署。

寒水馨 · 轻量级技术文档 · hanshuixin.org 1718

POJ - 3667 Hotel(线段树区间合并)

POJ - 3667 Hotel(线段树区间合并)The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a vacation on the sunny shores of Lake Superior. Bessie, ever the competent travel...

GYH0730的博客 386

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

## poj 3667 Hotel (线段树区间合并)

poj 3667 Hotel (线段树区间合并) The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a vacation on the sunny shores of Lake Superior. Bessie, ever the competent travel...

菜菜的博客 184

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

POJ 3667 hotel 和 NYOJ 537 hotel 【线段树之区间合并】

原题连接:http://poj.org/problem?id=3667 题意:参考样例,第一行输入n,m ,n代表有n个房间,编号为1---n,开始都为空房,m表示以下有m行操作,以下 每行先输入一个数 i  ,表示一种操作: 若i为1,表示查询房间,再输入一个数x,表示在1--n 房间中找到长度为n的连续空房,输出连续n个房间中左端的房间号,尽量让这个房间号最小,若找不到长度为n的连续空房,

nyist_飘谊 5967

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

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

POJ 3667 Hotel 线段树 区间合并

线段树区间合并果题。 传送门:http://poj.org/problem?id=3667 #include #include #include #include #include #include const int MAXN = 50005; struct Node { int x,y; int maxlen; int llen,rlen;

NM的专栏 584

POJ 3667 Hotel (线段树区间合并)

Hotel The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a vacation on the sunny shores of Lake Superior...

xcatf的博客 285

poj 3667 Hotel 经典线段树区间合并

传送门:poj 3667 Hotel题目大意题意: 1 a:询问是不是有连续长度为 a 的空房间,有的话住进最左边 2 a b:将[a,a+b-1]的房间清空解题思路当我们读懂这个题目的时候,我们一般会考虑下面几个问题 1. 怎么解决空房间不连续的问题 2. 怎么快速找到查询时候的下标 3. 父节点保存的什么,也就是pushUp应该怎么写? 下面我们来一步步的解决上面的疑问? 第三个

woshinannan的专栏 359

POJ 3667 Hotel 带区间合并操作的线段树

典型的带区间合并线段树,只要多加一个合并操作即可 Description The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a vacation on the sunny shores of Lake Superior. Bessie, ever the

MetalSeed 3295

POJ - 3667 Hotel 线段树区间合并

HotelTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 19431 Accepted: 8455DescriptionThe cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a vacation on...

Uniontake 340

POJ-3667:Hotel(线段树区间合并)

简单的线段树区间更新

污miao汪的博客 474

poj3667-Hotel 线段树区间合并

Hotel Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17772   Accepted: 7707 Description The cows are journeying north to Thunder Bay in Canada to gain cultu

wangheng 350

poj3667 Hotel (线段树 区间合并 求一块满足条件的最左边的空白空间 )

poj3667 HotelTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 18925 Accepted: 8242Description The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a...

weixin_30332241的博客 107

POJ 3667 Hotel(线段树区间合并)

题意: 给出n个房间,m个操作,操作有两种 操作1:需要x个连续的房间,如果存在则输出开始的房间,并占用,要求尽量小,没有的话则输出0. 操作2:从x开始的连续y个房间,解除占用。 关于区间合并: 区间合并问题一般是要求满足条件的一段连续的区间,个人觉得这类问题一个精华所在就是线段树的pushup函数的写法,如下: /*ls表示区间的满足条件最长连续前缀,rs表示最长连续后缀, ms表示该区间的最...

黑丝太白的博客 233

POJ3667_Hotel(线段树区间合并)

题意: 酒店有n个房间,两种操作: 1 a:询问是不是有连续长度为a的空房间,有的话住进最左边 2 a b:将[a,a+b-1]的房间清空 思路: 核心:维护每个区间的最大空余长度是多少。 需要3个变量: ls[i]:左端点向右连续最多有多少空房子 rs[i]:右端点向左连续最多有多少空房子 Tree[i]:整个区间最多连续有多少空房子 Tree[i] = max(rs[i * 2]+ls[i *...

CY05627的博客 1095
上一篇: poj2528 Mayor's posters(线段树经典例题 区间覆盖+离散化)
下一篇: hdu2871 Memory Control(线段树 区间合并)
小衣同学
博客等级 码龄9年 1444粉丝 995原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小衣同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值