CodeForces 46D Parking Lot(线段树区间合并)

Ubuntu22.04下RTX2080显卡驱动、CUDA、cuDNN保姆级避坑安装指南(实测有效) 本文提供Ubuntu22.04下RTX2080显卡驱动、CUDA和cuDNN的详细安装指南,涵盖前期准备、驱动安装、CUDA版本选择、cuDNN配置及常见问题解决。通过实测有效的步骤和优化建议,帮助用户快速搭建稳定的深度学习环境,避免常见陷阱。 阅读详情

题意:

有一条长度为L的街道,有N个操作,现在有两种操作:
(1)”1 a”,表示有一辆长度为a的车开进来想找停车位;
停车位必须满足与它前面的车距离至少为b,与后面的车距离至少为f;
如果能找到这样的停车位,输出这辆车的起始位置(且这个位置最小),否则输出-1;
(2)”2 a”,表示第a个事件里进来停车的那辆车开出去了;

解析:

这题和POJ 3677 Hotel差不多,都是寻找连续的空位。
不过要注意第一辆车是不需要考虑前方车距的,最后一辆车不需要后方车距。
我们可以把街道长度扩充为L+b+f即可,假设车长为x,那么每次查询长度大于等于x+b+f的空位就行了。

my code

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#define ls (o<<1)
#define rs (o<<1|1)
#define lson ls, L, M
#define rson rs, M+1, R
#define MID (L + R) >> 1
#define LEN(L, R) ((R) - (L) + 1)
#define pb push_back
using namespace std;
typedef pair<int, int> pii;
const int N = 100105;

int cov[N<<2];
int mx[N<<2], mxL[N<<2], mxR[N<<2];

vector<pii> list;

void maintain(int o, int L, int R, int val) {
    cov[o] = val;
    mx[o] = mxL[o] = mxR[o] = val * LEN(L, R);
}

void pushUp(int o, int L, int R) {
    int M = MID;

    mxL[o] = mxL[ls], mxR[o] = mxR[rs];
    mx[o] = max(mx[ls], max(mx[rs], mxR[ls] + mxL[rs]));

    if(mxL[ls] == LEN(L, M)) mxL[o] += mxL[rs];
    if(mxR[rs] == LEN(M+1, R)) mxR[o] += mxR[ls];

    if(cov[ls] == cov[rs])
        cov[o] = cov[ls];
    else cov[o] = -1;
}

void pushDown(int o, int L, int R) {
    if(cov[o] != -1) {
        int M = MID;
        maintain(lson, cov[o]);
        maintain(rson, cov[o]);
        cov[o] = -1;
    }
}

void build(int o, int L, int R) {
    cov[o] = -1;
    if(L == R) {
        maintain(o, L, R, 1);
        return ;
    }
    int M = MID;
    build(lson);
    build(rson);
    pushUp(o, L, R);
}

int query(int o, int L, int R, int need) {
    if(L == R) return L;
    int M = MID;
    pushDown(o, L, R);
    if(mx[ls] >= need)
        return query(lson, need);
    else if(mxR[ls] + mxL[rs] >= need)
        return M - mxR[ls] + 1;
    else
        return query(rson, need);
}

void modify(int o, int L, int R, int ql, int qr, int val) {
    if(ql <= L && R <= qr) {
        maintain(o, L, R, val);
        return ;
    }
    int M = MID;
    pushDown(o, L, R);
    if(ql <= M) modify(lson, ql, qr, val);
    if(qr > M) modify(rson, ql, qr, val);
    pushUp(o, L, R);
}

int n, m;
int main() {
    int L, b, f;
    int op, x, ql, qr;
    int start;
    while(~scanf("%d%d%d", &L, &b, &f)) {

        list.clear();
        n = L + b + f;
        build(1, 0, n);

        scanf("%d", &m);
        while(m--) {
            scanf("%d%d", &op, &x);
            if(op == 1) {
                int need = x + b + f;

                start = query(1, 0, n, need);
                ql = start + b, qr = ql + x - 1;
                list.pb(make_pair(ql, qr));

                if(b <= ql && qr < b + L) {
                    printf("%d\n", start);
                    modify(1, 0, n, ql, qr, 0);
                }else {
                    puts("-1");
                }
            }else {
                ql = list[x-1].first, qr = list[x-1].second;
                list.pb(make_pair(ql, qr));
                modify(1, 0, n, ql, qr, 1);
            }
        }
    }
}
AutoSAR配置视频讲解:新建DaVinci工程 AutoSAR实验视频讲解:闪烁一颗LED实验【新建DaVinci工程】 上一篇 | 下一篇 | 总目录 实验架构图 视频本频放在了文末,下图描述了本次实验配置内容在AutoSAR架构中的位置,供大家参考 实验内容 本节课程讲解新建DaVinci工程,听上去新建工程很简单,但是还是需要很多的准备工作和细节。主要内容是新建工程和导入dbc文件和导入arxml文件的方法 主要步骤 新建DaVinci工程 导入.dbc通信矩阵文件 导入Mcal的arxml文件 实验视频2:Mcal配置 提示:版权所在,违 阅读详情

相关推荐

【G4基础03】2.3 How to Specify Materials in the Detector

定义探测器材料

adelall的博客 489

CodeForces - 1004F Sonya and Bitwise OR(线段树区间合并)

F. Sonya and Bitwise OR time limit per test 4 seconds memory limit per test 512 megabytes input standard input output standard output Sonya has an array a1,a2,…,ana1,a2,…,an consisting of nn ...

LP_Cong 788

【AutoSar CP】SoAd模块

比如对于特定的PDU,其PduId在程序编译时就确定了,但是在代码运行中,该PduId可能需要发送到不同的远端ip,这时就需要用SoAd来设置连接远端地址信息。SoAdSocketConnectionGroup(连接参数)SoAdSocketRoute(接收数据)SoAdRoutingGroup(开关)SoAdPduRoute(发送数据)

至道无难,唯嫌拣择。 1686

Codeforces1567E Non-Decreasing Dilemma (线段树区间合并)

题目链接: Expression Evaluation Error 大致题意 给定长度为nnn的序列aaa, 有两种操作: 1 pos c 修改apos=ca_{pos} = capos​=c. 2 l r 询问区间存在多少个连续非递减子序列. 解题思路 思维 我们先只考虑查询操作: 对于一段长度为lenlenlen的连续非递减子序列而言, 其中会有∑i=1leni\displaystyle \sum_{i = 1}^{len}ii=1∑len​i个符合要求的序列. 因此我们只需统计[l,r][l, r][

Fau的博客 303

Verilog的综合指令

Synopsys综合指令

烟花一时的博客 5447

2、通过mos管构成的逻辑门电路

一、总结 mos管 是构成 逻辑门电路 的最基本单元。 各个逻辑门电路的真值表如下: 二、各种门 1、非门 NOT 2、与门 AND 3、与非门 把上面与门电路 右边的 非门电路 去掉 NAND 4、或门 OR 5、或非门 NOR 把或门右边的非门电路去掉 6、异或门 XOR 两个输入相异为1,相同为0。 7、同或门 XNOR 两个输入相同为1,相异为0。 ...

engineer0的博客 4万+

Codeforces Round #654 (Div. 2) F.Raging Thunder(线段树/区间合并)

题目 一个长为n(n<=5e5)的仅由'>"和'<'构成的字符串, 代表球桌上在1到n的位置,有n个转换器, 此外,球桌上还有0到n,共n+1个球洞,假设此时球碰到i位置的转换器, 对于i位置的<转换器, ①如果i=1,球会落到0位置球洞 ②如果i-1位置是<转换器,球会滚到i-1的转换器 ③如果i-1位置是>转换器,球会落到i-1位置球洞 对于i位置的>转换器, ①如果i=n,球会落到n位置球洞 ②如果i+1位置是>转换器,球会滚到i+1

小衣同学的博客 660

欧姆龙PLC与fanuc发那科机器人进行Ethrenet ip通信测试

近期在做发那科FANUC的通讯,会吧CC-LINK、Profibus-DP、Profinet I/O、DeviceNet、EtherNet/IP这些常用通讯做成文档发上来,大家喜欢的话可以关注 注:做对应的通讯,在机器人控制柜都需要安装对应的板卡以及软件功能 截图中的程序设置和机器人EDS插件在下面链接 https://download.youkuaiyun.com/download/gojava/13770799 PLC为主站 机器人为从站 一、硬件部分 欧姆龙PLC ...

七兔自习室 1万+

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

PaddleOCR实战:从零开始打造专属OCR模型的完整指南

本文提供了一份从零开始使用PaddleOCR打造专属OCR模型的完整实战指南。内容涵盖环境搭建、数据标注与准备、模型训练与调优,以及最终的模型转换与部署。重点介绍了如何利用PaddleOCR进行模型训练,并整合PPOCRLabel等工具高效准备数据集,帮助开发者快速构建适用于特定场景的高精度OCR识别能力。

rl6adventurer的博客 733

YOLO11 锚框机制全解析:从改进 K-means 聚类到自适应优化,附多场景实战(附代码)

摘要 YOLO11的锚框机制采用"自适应、动态化、场景感知"的设计理念,通过数据驱动的锚框生成、多尺度感知分配和实时优化策略,显著提升目标检测性能。相较于早期YOLO版本,YOLO11的锚框完全基于训练集目标分布自适应生成,并引入智能分配策略,使不同尺寸目标获得最优匹配。技术架构包含自适应锚框生成、多尺度分配器和动态优化模块,通过改进的K-means聚类和交并比计算实现精准匹配。YOLO11锚框机制在检测精度、训练稳定性和场景适应性方面均有显著提升,为复杂场景下的目标检测提供更优解决方案

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1321

codeforces 46D Parking Lot(线段树 区间合并)

附上题意:http://blog.youkuaiyun.com/cyhbyw/article/details/8793195 不知道怎么wa的,没找到错误,然后就把 poj 3667 Hotel的代码改了改就交了,A掉。。。#include <cstdio> #include <cstring> #include <algorithm>#define lson l,m,rt<<1 #define rson m

梦幻的蔷薇色 436

lwip-2.0.3

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

CodeForces 46D Parking Lot (线段树区间合并)

题意: 长为len的停车场,一辆车要停下,则必须车尾留b长度的空间且车头与前面的车保持f长度。 有n次操作:1,长为val 的车要寻找车位停下,若能停下输出最小的停车点下标,否则输出-1                     2,第val辆车开走了。 解:显然是线段树的区间合并。这里有个小技巧,就是树的范围是(-b,len+f-1).这里就保证了第一辆车停在0点,不用特判边界条件。为什么

swust_lian的博客 394

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Parking Lot题解

一道线段树区间合并,一开始本小白并不会写,看了大佬的题解后才写出来。 传送门(Codeforces 46D) 思路:这道题的精髓在于最开始建树时,多加一个b和f,这样我们就很好停车了(大家可以自己仔细思考一下),当我们这样建好树之后就是一个很经典的区间合并了。 #include <iostream> #include <cstdio> #include <cstri...

chenchenchenhk的博客 457

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Codeforces 46D Parking Lot

题意 直线停车场长度L(10≤L≤105)L(10 \le L \le 10^5)L(10≤L≤105),车长xxx,头尾还需空出b,f(1≤x≤1000,1≤b,f≤100)b,f(1\le x \le1000, 1\le b,f \le 100)b,f(1≤x≤1000,1≤b,f≤100)的距离。最多有100次操作:停车和出车操作。对于每个停车操作输出这辆车停的位置(尽量靠左的位置),对于出...

WRITELN 251

[CF46D]Parking Lot

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

weixin_30924239的博客 282

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

Codeforces 46D Parking Lot(线段树)

题目链接:Codeforces 46D Parking Lot 题目大意:一个街道,长为N,每辆车停进来的时候必须和前面间隔B米,和后面间隔F米,现在用两种操作,1是停进来一个长为x的车,2是第x辆车开走。 解题思路:区间合并,建一颗长度为N + B + F的线段树,然后每次停车进去的时候都查询x + B + F的区间,然后修改的时候只修改x的长度。 #include #inclu

不慌不忙、不急不躁 1071

Parking Lot 【CodeForces - 46D】【线段树区间更新好题】

题目链接   这道题的思路很重要(一开始还感觉是不是题意错了…… )——题记。   先讲一下题意:我们知道有个长度为L的停车场,并且,对于每一辆车,它们的车头与上一辆车必须相差F长,它们的车尾必须与下一辆车相差B长,问的是这辆车最前会停在哪个位置?其中,F与B可以相互包含,就是车前与车后的间距是可以补充取大得到的,不必要多空距离。   这道题最难处理的也是最具有思维的就是车前的距离与车尾的距...

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

Codeforces 46D Parking Lot(贪心模拟)

Codeforces 46D Parking Lot 题目链接 开线段树专题开出了这题。。看似要用区间合并求连续最大区间,其实不需要。因为询问才100个,直接set暴力去模拟即可,每次车进来就从左往右找到一个合适位置 代码: #include #include #include using namespace std; const int N = 100005; i

Remilia's 1137

Codeforces 46D Parking Lot 枚举

题目 题目链接:http://codeforces.com/problemset/problem/46/D 题目来源:某人总结的线段树合集 简要题意:要停一些车子,车子有长度,每个车子至少要距离前后的车子某距离,可以移走车子,求每次停车的位置。

ned_chu的博客 470

Codeforces46D(Parking Lot)线段树区间查询

/*********************************************** 题目地址: http://codeforces.com/problemset/problem/46/D 题目大意: 有一条长度为L的街道,有N个操作,操作有两种: (1)"1 a",表示有一辆长度为a的车开进来想找停车位; 停车位必须满足与它前面的车距离至少为b,与后面的车距离至少为f; 如果能找到

始往流离,终彼成章。 2099

CodeForces 46 D. Parking Lot

简单的区间合并线段树,不过要特殊讨论一下当前车是停车场里面唯一一辆车的情况还有车停在边界的情况 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define lson rt<...

weixin_30852419的博客 89

Codeforces 46 D Parking Lot(线段树区间更新模板题)

题目地址 题意:有长度为n米的停车场,停车的要求是要与前面一辆车至少隔a米,和后一辆车至少隔b米(只要符合要求就可以停入,不管之后会不会打破这个要求。PS:我就是想了好久没有想通),有m个操作,有两种操作类型: 1 x 把长度为x米的车停入停车场(一定要符合停车要求) 2 x 将第x个操作中停入的车开出

不要錯過才珍惜 794

Codeforces Beta Round #43 D. Parking Lot

题目:http://www.codeforces.com/problemset/problem/46/D 题意:有一个长为L的街道可用作停车区域。在停车时,司机应当使车与街道完全平行,并且车的方向与道路的前进方向一致。为了能方便地把车停下来,司机在寻找停车位时,要求其与后一辆车的距离不小于b、与前一辆车的距离不小于f(如果其后面无车的话,那么司机当然可以把车停在此停车区域的最末位置,同理,如果其

cyhbyw的专栏 755

codeforces 46D Parking Lot(线段树模拟区间管理 or set模拟)

题意: 可以看成是 poj Hotel 那道题的加强版。 这里是找车位,还要考虑与前后车之间的距离。。 不过这里n只有100,用set,就成了水题啊。。。思路: 1) 线段树 比起 Hotel 也就是多讨论几种情况吧。。const int N = 100000 + 5;struct Node { int len, l, r, m, tag; // 0 - no tag, 1 - f

slowlight93的专栏 446
上一篇: HDU 1540 Tunnel Warfare(线段树区间合并)
下一篇: ZOJ 3724 Delivery(树状数组+离线处理)
HelloWorld10086
博客等级 码龄12年 88粉丝 614原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值