CF 46D Parking Lot(区间合并)

ZEMAX知识点:坐标间断面(coordinate break) zemax知识点:坐标间断面 阅读详情


这个题和Hotel差不多

把整个树的区间增加b+f就可以直接处理了

查询的时候查询车长+b+f,更新的时候还是更新车长、、

把出车的标号理解成第几次进入的车了、WA了一个小时有木有、、、


#include<stdio.h>
#include<string.h>
#define MAXN 201000
#define lch p<<1
#define rch p<<1|1
#define mid (t[p].l+t[p].r)>>1
struct node
{
	int l,r;
	int lsum,rsum,sum;
	int flag;
	int len;
	void getsum() {lsum=rsum=sum=(flag?len:0);}
}t[MAXN<<2];
struct carin
{
	int l,r;
}car[105];
int max(int a,int b) {return a>b?a:b;}
void construct(int l,int r,int p)
{
	t[p].l=l,t[p].r=r,t[p].flag=-1;
	t[p].len=r-l+1;
	t[p].getsum();
	if(l==r) return ;
	int m=mid;
	construct(l,m,lch);
	construct(m+1,r,rch);
}
void pushdown(int p)
{
	t[lch].flag=t[rch].flag=t[p].flag;
	t[p].flag=-1;
	t[lch].getsum();
	t[rch].getsum();
}
void pushup(int p)
{
	t[p].sum=max(t[lch].sum,t[rch].sum);
	t[p].sum=max(t[p].sum,t[lch].rsum+t[rch].lsum);
	t[p].lsum=t[lch].lsum;
	if(t[lch].lsum==t[lch].len) t[p].lsum+=t[rch].lsum;
	t[p].rsum=t[rch].rsum;
	if(t[rch].rsum==t[rch].len) t[p].rsum+=t[lch].rsum;
}
void modify(int l,int r,int op,int p)
{
	if(t[p].l==l&&t[p].r==r)
	{
		t[p].flag=op;
		t[p].getsum();
		return ;
	}
	if(t[p].flag!=-1) pushdown(p);
	int m=mid;
	if(r<=m) modify(l,r,op,lch);
	else if(l>m) modify(l,r,op,rch);
	else modify(l,m,op,lch),modify(m+1,r,op,rch);
	pushup(p);
}
int query(int x,int p)
{
	if(t[p].l==t[p].r&&x==1) return t[p].l;
	if(t[p].flag!=-1) pushdown(p);
	if(x<=t[lch].sum) return query(x,lch);
	else if(t[lch].rsum+t[rch].lsum>=x) return t[lch].r-t[lch].rsum+1;
	else if(x<=t[rch].sum) return query(x,rch);
	else return -1;
}
int main()
{
	int op,x;
	int len,b,f,n;
	while(scanf("%d%d%d",&len,&b,&f)!=EOF)
	{
		//int cnt=1;
		construct(0,len+b+f-1,1);
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
		{
			scanf("%d%d",&op,&x);
			if(op==1)
			{
				int l=query(x+b+f,1);
				if(l==-1) printf("-1\n");
				else
				{
					printf("%d\n",l);
					l+=b;
					int r=l+x-1;
					car[i].l=l,car[i].r=r;
					modify(l,r,0,1);
				}
			}
			else
				modify(car[x].l,car[x].r,1,1);
		}
	}
	return 0;
}


昇腾910B多卡环境下hccl-test性能调优实战 本文详细介绍了昇腾910B多卡环境下hccl-test性能调优的实战经验,包括环境搭建、CANN工具链配置、性能测试与高级调优技巧。通过优化缓冲区、PCIe拓扑和中断亲和性设置,显著提升多卡通信效率,为AI训练提供稳定高效的计算支持。 阅读详情

相关推荐

C# 操作Excel的时候,出现"被呼叫方拒绝接受呼叫的异常"的解决方案(参考官方给出的解决方案)

首先官方有对这个错误给出解释和解决方案,连接如下: https://docs.microsoft.com/zh-cn/previous-versions/ms228772(v=vs.120)#%E5%8F%AF%E9%9D%A0%E7%BC%96%E7%A8%8B 简单来说,貌似是线程问题,我猜。。。 之前我尝试着在代码中添加 Thread.Sleep(1000); 来进行解决,这种办...

Ck_Max的博客 5767

CF 46D Parking Lot(SET)

题目链接:http://codeforces.com/problemset/problem/46/D 题目大意: 在长为L的(点0~点L)的线段上停车开车操作; 停车 1 x:车长x,需要b+x+f的空余才能使车停进去,多个区域,选择最左边 开车 2 x:第x次操作,停进的车,开出去 分析:因为需要插入的次数很小,所以可以直接记录,每辆汽车一次插入的位置,

超级码力 706

XGBoost的简单安装及入门使用

XGBoost安装及简单入门 XGBoost支持多种操作系统,如Windows, Linux, MacOS等,并支持多种语言版本,如Python, R, Scale, Java等。XGBoost的安装方式一般有两种,一种是直接通过pip安装(适合用于Python),另外一种是通过源码编译安装 1、通过pip安装 通过pip安装Python包既简单又方便,只需执行如下的命令: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xgboost 使用

qq_41513230的博客 3万+

[CF46D]Parking Lot

题目:Parking Lot 传送门:http://codeforces.com/problemset/problem/46/D 分析: 做法一: 1)这题和Hotel那题一样,也可以看做是求区间空位的问题,不过相对于Hotel那题细节会更多一些。 2)头和尾是不用考虑前和后是否有车的,但可以在$-B$和$L+F$这两个位置假装停了一辆车,这样就不用考虑第一辆插入的车和插入在最后的车啦...

weixin_30924239的博客 282

告别色差!用Python+TCS34725颜色传感器实现精准色彩还原(附完整校准代码)

本文详细介绍了如何利用Python和TCS34725颜色传感器实现专业级色彩还原方案。通过双阶校准法(白光校准和黑电平校准)和进阶的光照自适应技术,解决传感器原始数据不准的问题,并提供完整的校准代码和实战案例,帮助开发者实现ΔE<3的高精度色彩识别。

weixin_30836759的博客 209

基于STM32的Keil5代码自动补全设置操作指南

掌握Keil5代码自动补全设置技巧,提升STM32开发效率。通过合理配置编辑器选项,实现智能提示与语法补全,让嵌入式编程更流畅,尤其适合使用keil5代码自动补全设置的开发者快速上手。

weixin_32287387的博客 762

CF 46 D. Parking Lot(线段树)

D. Parking Lot time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Nowadays it is becoming increasingly difficu

志当存高远 1334

GLDAS数据高效处理指南:基于Matlab的NC4转GeoTIFF实战解析

本文提供了一份基于Matlab的GLDAS数据处理实战指南,详细解析了如何将NetCDF4格式的GLDAS数据高效、准确地批量转换为GIS友好的GeoTIFF格式。文章核心内容包括数据理解、环境搭建、核心代码逐步拆解、效率提升技巧以及常见避坑方案,旨在帮助全球生态、水文与气候领域的研究者打通数据预处理的关键环节,提升科研工作效率。

weixin_29094775的博客 311

CF 46D Parking Lot

题目链接:http://codeforces.com/problemset/problem/46/D 题目大意: 在长为L的(点0~点L)的线段上停车开车操作; 停车 1 x:车长x,需要b+x+f的空余才能使车停进去,多个区域,选择最左边 开车 2 x:第x次操作,停进的车,开出去 题目思路: 思路很简单,很裸的线段树区间合并。 但是我还是做第三次了,都没有1A,所

Go.To.AC的专栏 1194

100天精通Python(可视化篇)——第109天:Pyecharts绘制各种常用地图(参数说明+代码实战)

100天精通Python(可视化篇)——第109天:Pyecharts绘制各种常用地图(参数说明+代码实战)

努力让自己发光,对的人才能迎着光而来 8万+

ROS入门教程(四)—— URDF文件与导出

本文将介绍如何在ROS中描述我们的机器人。

吾门的博客 8185

cf46d

此题区间精度把我搞的郁闷死了。。。 其实很好理解,此题和hotel是一个性质,由于两端点不好处理,我就在左端加一个b,右端加一个f,然后这样就可以保证所有车都可以满足条件了,然后在询问的时候把b加回来就好了。。。。。 就是由于我的坐标轴往后延伸了b,然后我的是有负数,然后处理的时候总会有精度差。。。把我debug调死了。。。 搞了2个小时没搞定这个。。。索性不这样建了。。直接下标0开始,然后

lyc 820

AI Agent在智能腰带中的姿势矫正与提醒

随着人们生活方式的改变,长时间不正确的坐姿、站姿等不良姿势问题日益普遍,这不仅会导致身体疲劳,还可能引发颈椎病、腰椎病等多种健康问题。智能腰带作为一种可穿戴设备,具有实时监测人体姿势的潜力。本研究的目的是将AI Agent引入智能腰带,实现对人体姿势的准确识别、矫正与提醒功能。本研究的范围涵盖了从AI Agent的核心算法原理到智能腰带的实际开发与应用。包括传感器数据的采集与处理、机器学习算法的选择与训练、智能腰带的硬件设计与软件开发,以及在不同场景下的实际应用测试。本文共分为十个部分。

AI 原生应用开发的博客 344

CF-46D-Parking Lot(线段树,区间合并,点表示线段)

D. Parking Lot time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Nowadays it is becoming increasingly difficu

fsdcyr 1373

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

zoj 3633 Alice's present 线段树

链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3633 题意:给出一n个数的序列,然后又m个询问[x,y](下标),如果[x,y]内没有重复的数,就输出OK,否则输出从右至左第一个重复的数字 测试数据: 5 1 2 3 1 2 3 1 4 1 5 3 5 [1,4]间从右到左第一个重复的数字是1 [

yjCola 4723

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

poj3667 Hotel (线段树区间合并)

链接:http://poj.org/problem?id=3667 题意:n个连续的房间m个操作。操作分两种,第一种以1 x形式给出,找到最左的能连续容下x个人的连续房间,并输出左端点的编号,如果找不到就输出0.第二章以2 l x的形式给出,表示以l为起点的x个房间都清空。 查询的时候要能直接获取区间的最大连续空房间,这样就能判断能不能连续放下这x个人,但这样还确定不了具体放哪。放的位

yjCola 2409

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

poj 3468 A Simple Problem with Integers(线段树成段更新,延迟标记,Lazy)

链接:http://poj.org/problem?id=3468 线段树成段更新,延迟更新 #include #include #define MAXN 100005 struct node { int l,r; __int64 s,c; }t[MAXN*4]; void construct(int l,int r,int p) { t[p].l=l,t[p].r=r,t[

yjCola 1814

hdu 4521 小明系列问题——小明序列

链接:http://acm.hdu.edu.cn/showproblem.php?pid=4521 题目中文 这个题我用线段树做的,也有更快的算法,这里只介绍线段树的方式 叶子节点为输入的值 从头开始遍历,线段树天然地排好序,所有不用管大小的问题,设加入了点a[i],那么在一个子序列中这个点最近的下一个点就是a[i+d+1],相当于对于a[i+d+1]来说,当加入了点a[i]时,就

yjCola 996

hdu 1542 Atlantis(线段树,扫描线)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1542 题意:n个矩阵,给出每个矩阵的左下和右上两个点的坐标,求出所有矩形总的覆盖面积。 扫描线问题,因为坐标是浮点型,那就必须把坐标离散化,我这直接上map了。 再来就是求这个面积的方式了:我这是向y轴映射,那么就保存每一条竖线,包扩该条竖线的x坐标,上下两个y坐标,还有用lr保存这条竖线是

yjCola 972

poj2777 Count Color线段树延迟更新,二进制状态记录

题目链接 线段树延迟更新的运用,这里用到二进制的方式保存状态,位运算向上更新状态 需要注意的是给出的a,b可能a>b #include #include #define MAXN 100005 struct node { int l,r; int c; int rec; }t[MAXN*4]; void construct(int l,int r,int p)

yjCola 946

poj 2352-Stars

链接:http://poj.org/problem?id=2352 因为题目给出的数据y是非递减的,所以y可以直接忽略掉,题目不是很难,比较适合练手,给出线段树和树状数组做的代码 线段树: #include #include #define MAXN 32010 int sum[15010]; struct node { int l,r; int s; }t[4*

yjCola 903

hdu 3255 Farming(扫描线、求立方体交)

hdu 3255 Farming 纠结了几个小时,不过还是很值得的,x

yjCola 874

poj 3145 Harmony Forever(线段树)

poj 3145 Harmony Forever 奇葩怪异吐血题,无力duo'shuo

yjCola 873

poj 2482 Stars in Your Window(线段树,扫描线)

poj 2482 Stars in Your Window 题意,用一个矩形qu

yjCola 872

hdu 3333 Turing Tree 线段树

链接:http://acm.hdu.edu.cn/showproblem.php?pid=3333 题意:给出n个数的一个序列,询问m次,每次询问区间[i,j]内改序列不同数之和,就是说该区间如果某个数出现多次,则只算一次。 这个题要从正面去做太难太难,反正我是不会。 线段树域保存区间不同数之和。 先把所有的询问保存下来,然后以右端点递增排序,遇到右端点相同的怎么排都无所谓。 然

yjCola 834

hdu 1256 Counting Squares

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1264 题意:在一个直角坐标系中给出若干个矩阵对角线两个点的坐标,求所有的矩形所覆盖的面积,x,y范围[0,100],且是整数 这个题分到线段树那类的,但是看了题后感觉范围也比较小,直接数组暴力模拟应该不会超时,结果和所想一样。不过最近在学线段树,还是要慢慢研究线段树的做法,想到后再贴线段树的代码。

yjCola 819
上一篇: poj 2481 Cows(线段树)
下一篇: hdu 3308 LCIS(区间合并)
yjCola
博客等级 码龄14年 4粉丝 138原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值