POJ 3667 Hotel 线段树 区间合并

Plecs仿真进阶:半桥LLC谐振变换器从开环到闭环的实战解析 本文通过Plecs软件,详细解析了半桥LLC谐振变换器从开环模型搭建到闭环控制实现的完整仿真流程。文章深入探讨了谐振参数设置、关键波形解读,并重点分享了基于PI控制器的闭环调试实战经验与参数整定技巧,帮助工程师高效掌握这一高效拓扑的仿真与设计方法。 阅读详情

线段树区间合并果题。

传送门:http://poj.org/problem?id=3667

#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <iostream>
#include <algorithm>

const int MAXN = 50005;

struct Node {
    int x,y;
    int maxlen;
    int llen,rlen;
    int lazy;
}t[MAXN << 2];

void Push_Up(int rt) {
    //Update llen and rlen;
    t[rt].llen = t[rt<<1].llen;
    t[rt].rlen = t[rt<<1|1].rlen;
    if(t[rt<<1].llen == t[rt<<1].y - t[rt<<1].x + 1) t[rt].llen += t[rt<<1|1].llen;
    if(t[rt<<1|1].rlen == t[rt<<1|1].y - t[rt<<1|1].x + 1) t[rt].rlen += t[rt<<1].rlen;

    //Update maxlen;
    t[rt].maxlen = t[rt<<1].maxlen;
    if(t[rt<<1|1].maxlen > t[rt].maxlen) t[rt].maxlen = t[rt<<1|1].maxlen;
    if(t[rt<<1].rlen + t[rt<<1|1].llen > t[rt].maxlen) t[rt].maxlen = t[rt<<1].rlen + t[rt<<1|1].llen;
}

void Push_Down(int rt) {
    if(t[rt].lazy != -1) {
        t[rt<<1].lazy = t[rt].lazy;
        t[rt<<1|1].lazy = t[rt].lazy;
        if(t[rt].lazy == 0) {
            t[rt<<1].llen = t[rt<<1].rlen = t[rt<<1].maxlen = (t[rt<<1].y - t[rt<<1].x + 1);
            t[rt<<1|1].llen = t[rt<<1|1].rlen = t[rt<<1|1].maxlen = (t[rt<<1|1].y - t[rt<<1|1].x + 1);
        }
        else {
            t[rt<<1].llen = t[rt<<1].rlen = t[rt<<1].maxlen = 0;
            t[rt<<1|1].llen = t[rt<<1|1].rlen = t[rt<<1|1].maxlen = 0;
        }
        t[rt].lazy = -1;
    }
}

void Build(int x,int y,int rt) {
    t[rt].x = x; t[rt].y = y; t[rt].lazy = -1;
    if(x == y) {
        t[rt].maxlen = 1; t[rt].llen = 1; t[rt].rlen = 1;
        return ;
    }
    int mid = (x + y) >> 1;
    Build(x,mid,rt<<1);
    Build(mid+1,y,rt<<1|1);
    Push_Up(rt);
}

void Update(int x,int y,int rt,int l,int r,int v) {
    if(x >= l && y <= r) {
        t[rt].lazy = v;
        if(v == 0) {
            t[rt].maxlen = t[rt].llen = t[rt].rlen = (y - x + 1);
        }
        else {
            t[rt].maxlen = t[rt].llen = t[rt].rlen = 0;
        }
        return ;
    }
    Push_Down(rt);
    int mid = (x + y) >> 1;
    if(mid >= l) {
        Update(x,mid,rt<<1,l,r,v);
    }
    if(mid < r) {
        Update(mid+1,y,rt<<1|1,l,r,v);
    }
    Push_Up(rt);
}

int Query(int x,int y,int rt,int w) {
    if(x == y) {
        return x;
    }
    //printf("x : %d y : %d rt : %d maxlen : %d  w : %d\n",x,y,rt,t[rt].maxlen,w);
    Push_Down(rt);
    int mid = (x + y) >> 1;
    if(t[rt<<1].maxlen >= w) return Query(x,mid,rt<<1,w);
    if(t[rt<<1].rlen + t[rt<<1|1].llen >= w) return (t[rt<<1].y - t[rt<<1].rlen + 1);
    if(t[rt<<1|1].maxlen >= w) return Query(mid+1,y,rt<<1|1,w);
    return 0;
}

void print(int x,int y,int rt) {
    printf("x : %d y : %d maxlen : %d lazy : %d\n",x,y,t[rt].maxlen,t[rt].lazy);
    if(x == y) return ;
    int mid = (x + y) >> 1;
    print(x,mid,rt<<1);
    print(mid+1,y,rt<<1|1);
}

void Deal_with() {
    int n,m;
    while(~scanf("%d %d",&n,&m)) {
        int tempa,w,pos,len;
        Build(1,n,1);
        //print(1,n,1);
        for(int i = 1 ; i <= m ; i++) {
            scanf("%d",&tempa);
            if(tempa == 1) {
                scanf("%d",&w);
                pos = Query(1,n,1,w);
                printf("%d\n",pos);
                if(pos)
                    Update(1,n,1,pos,pos+w-1,1);
                //print(1,n,1);
            } 
            else{
                scanf("%d %d",&pos,&len);
                Update(1,n,1,pos,pos+len-1,0);
            }
        }
    }
}

int main(void) {
    //freopen("a.in","r",stdin);
    Deal_with();
    return 0;
}


Cesium中GLB模型加载 Cesium中GLB模型加载全解析:Primitive与Entities方法详解 阅读详情

相关推荐

TC275-AutoSAR实战:Davinci Cfg多核OS配置与调试技巧

本文详细介绍了在TC275芯片上使用Davinci Cfg工具进行AutoSAR多核操作系统配置的实战步骤与调试技巧。内容涵盖从导入arxml文件的常见“坑”开始,到配置Det、EcuC、创建多核OS实例、关联OS应用、创建任务与设置优先级调度,最后分享了利用Det日志、调试器多核视图及处理核间通信与缓存一致性等关键调试方法,旨在帮助开发者高效完成复杂车载ECU软件集成。

weixin_29219189的博客 491

线段树专题—POJ 3667 Hotel(区间合并模板)

题意:给一个n和m,表示n个房间,m次操作,操作类型有2种,一种把求连续未租出的房间数有d个的最小的最左边的房间号,另一个操作时把从x到x+d-1的房间号收回。 分析:这是一个区间合并的典型应用,基本只要套套模板就好了 下面是对区间合并的解释: up函数:当修改完此时的区间时,为了维护该区间上面区间值的正确性,向上回朔更新上面区间的值 down函数:把延迟标记下传,并修改下

sin_XF的专栏 1663

快手did did_gt edid的注册过程

接口 https://gdfp.ksapisrv.com/rest/infra/gdfp/report/kuaishou/android did 是本地生成的16进制 或者 获取的 android_id did_gt 是did生成时间戳 1595073601970 public static final Random f16237a = new Random(System.currentTimeMillis()); public static long m19668a() {  &n

HURUWO的技术博客 1万+

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

用scons编译STM32F103工程

想用vscode来实现代码的编辑与调试代码,原先这个工程是用STM32CUBEIDE建立的,参照STM32CUBEIDE的编译过程,编写了下面的scons脚本,scons是初次了解,既然是python脚本,那么会什么就怎么写吧。 import os import sys import glob cross_compiler_prefix = 'arm-none-eabi-' CC = cross_compiler_prefix+'gcc' CXX = cross_compiler_prefix+'g+

cylinc的专栏 1623

R语言基础之R语言入门

R语言最初是由新西兰奥克兰大学统计系的教授Ross Ihaka和Robert Gentleman在S语言基础上开发完成的。是一门解释性语言。在我看来R语言是一门数学性极强的语言,或者说这是一门为数学而生的语言,因为其具有极其出色的计算与统计分析能力...

weixin_46912400的博客 5万+

## 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

SAP_MM模块库存概览俄罗斯报表简介

本文介绍了SAP MM模块中"库存概览俄罗斯报表"的功能与应用。该报表主要用于查看物料在不同库存地点和类型的库存情况,并满足俄罗斯当地法规要求。文章解释了"俄罗斯报表"可能指代本地化合规库存报表或客户自定义报表,详细说明了事务代码J3RFLVMOBVEDH的操作步骤,包括公司代码、物料编码、日期范围等查询条件,并解释了报表中各字段含义如期初期末库存数量与价值。最后强调在物料分类账处理完成后使用该报表可获得实际库存价值,为SAP用户提供了实用的库存管理参考。

我小时候很黑的博客 1092

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

ASPICE学习笔记

ASPICE的全称是Automotive SPICE。

汽车电子软件领域知识分享 1355

实现真正的「人机」对战:引入三方 AI 引擎

引入三方 AI 引擎 前边,我们实现了与云库对战的象棋游戏。这一节中,我们将开始实现真正的「人机」对战 — 人与手机 AI 之间对弈; 实现一套象棋 AI 工程浩大,这个工作我们后续文章会做一番介绍。现代软件工程并不主张每个人都「造轮子」,因此我们要有「站在巨人肩膀上」的小智慧。 本节概要 从 github 寻找开源中象引擎 梳理引擎接入的思路 寻找适合的开源中国象棋引擎 github 上有大...

tosmart的博客 983

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

Xilinx FPGA ICAP原语实现多重配置

众所周知,常见的FPGA通常为SRAM结构,固件程序一般存放在外置的串行Flash中,比如SPI Flash,M25P16或N25Q128等。 FPGA启动时,一般先从SPI起始地址开始加载数据到内部的SRAM,加载完成、校验通过则会直接运行。 那么有没有可能在SPI Flash中存放两个或多个FPGA固件呢?

whik1194的博客 4614

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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

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

woshinannan的专栏 359

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

poj3667 Hotel(线段树 区间合并)

题意 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.csdn.ne...

小衣同学的博客 415

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

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

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

简单的线段树区间更新

污miao汪的博客 474

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

POJ 3667 Hotel 线段树区间合并

题意: 模拟订房系统。给出N,M。代表房间数和操作次数。每组操作中  1 表示入住 k 间连续房间,要求安排的房间连续且在最左边,如果能入住输出最左边的房号,不能则 -1. 2 表示退从第K 间房起连续的P间房。 思路: 先查找最左端的房子,当左区间的房间的最大连续小于要求时(即查找到最左端)返回,返回后通过区间合并判断是否满足题意。 代码: #include #include

DT2131 446

poj 3667 Hotel 【线段树lazy + 区间合并】

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

世界很大 582

POJ 3667 Hotel 【线段树 区间合并】

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

wyjwyl的专栏 669
上一篇: HDU 3308 LCIS 线段树
下一篇: UVA - 11995 I Can Guess the Data Structure!
_NMfloat_
博客等级 码龄12年 7粉丝 315原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值