poj3667 区间合并,找最左边的空余块

题很简单:给两个操作1:查找最左边的a个空余块并填满

          2:把从第a个开始的连续b个块置空

线段树维护左连续,右连续,最大连续,lazy-tag即可,query函数值得学习

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
#define maxn 500005
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
int lmx[maxn<<2],rmx[maxn<<2],mx[maxn<<2],flag[maxn<<2];inline void set0(int l,int r,int rt){lmx[rt]=rmx[rt]=mx[rt]=r-l+1;flag[rt]=0;
}
inline void set1(int l,int r,int rt){lmx[rt]=rmx[rt]=mx[rt]=0;flag[rt]=1;
}
inline void pushup(int l,int r,int rt){lmx[rt]=lmx[rt<<1];rmx[rt]=rmx[rt<<1|1];mx[rt]=max(mx[rt<<1],mx[rt<<1|1]);int m=l+r>>1;if(lmx[rt<<1]==m-l+1) lmx[rt]+=lmx[rt<<1|1];if(rmx[rt<<1|1]==r-m) rmx[rt]+=rmx[rt<<1];if(rmx[rt<<1]&&lmx[rt<<1|1]) mx[rt]=max(mx[rt],rmx[rt<<1]+lmx[rt<<1|1]);    }
inline void pushdown(int l,int r,int rt){if(flag[rt]>=0){int m=l+r>>1; flag[rt<<1]=flag[rt<<1|1]=flag[rt];if(flag[rt]==0){set0(lson);set0(rson);}else if(flag[rt]==1){set1(lson);set1(rson);}flag[rt]=-1;}
}
void build(int l,int r,int rt){if(l==r){lmx[rt]=rmx[rt]=mx[rt]=1;flag[rt]=-1;return;}int m=l+r>>1;build(lson);build(rson);pushup(l,r,rt);
}
void  update(int L,int R,int op,int l,int r,int rt){if(L<=l && R>=r){if(op==0) set0(l,r,rt);if(op==1) set1(l,r,rt);return;}pushdown(l,r,rt);int m=l+r>>1;if(L<=m) update(L,R,op,lson);if(R>m)update(L,R,op,rson);pushup(l,r,rt);
}
//cnt要么在左儿子,要么在中间合并块,要么在右子树
int query(int cnt,int l,int r,int rt){if(l==r)return l;pushdown(l,r,rt);int m=l+r>>1;if(cnt<=mx[rt<<1])return query(cnt,lson);else if(cnt<=rmx[rt<<1]+lmx[rt<<1|1])return m-rmx[rt<<1]+1;else return query(cnt,rson);
}
int main(){int n,m;while(scanf("%d%d",&n,&m)==2){build(1,n,1);int a,b,op;while(m--){scanf("%d",&op);if(op==1){scanf("%d",&a);if(mx[1]<a){puts("0");continue;}int tmp=query(a,1,n,1);printf("%d\n",tmp);update(tmp,tmp+a-1,1,1,n,1);}else if(op==2){scanf("%d%d",&a,&b);update(a,a+b-1,0,1,n,1);}}}return 0;
}

 

转载于:https://www.cnblogs.com/zsben991126/p/9977184.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

柳进军 | 城市大脑的逻辑模型

来源&#xff1a;人民智库近年来&#xff0c;在人工智能、大数据、云计算等新技术发展以及国家新基建等政策的双重推动下&#xff0c;各地政府普遍将“城市大脑”建设纳入了城市发展建设计划&#xff0c;“城市大脑”相关的实践活动也在蓬勃开展&#xff0c;“城市大脑”已经成…

【综述专栏】神经网络的可解释性综述

来源&#xff1a;知乎作者&#xff1a;知乎—机器学习小谈地址&#xff1a;https://zhuanlan.zhihu.com/p/368755357本文以 A Survey on Neural Network Interpretability 读后感为主&#xff0c;加上自身的补充&#xff0c;浅谈神经网络的可解释性。论文&#xff1a;https://a…

吴军:既能得诺贝尔奖,又能生产高科技产品,美国的科研机制是如何运行的?...

来源&#xff1a;大数据文摘范内瓦布什&#xff08;Vannevar Bush&#xff09;一生大部分时间供职于麻省理工学院&#xff0c;是这所世界排名第一的理工科大学最引以为傲的人之一。2016年&#xff0c;我访问麻省理工的媒体实验室。由于我到的时间早了一点&#xff0c;伊藤主任还…

spring data jpa update

一&#xff1a;在controller 加上&#xff1a; Controller RequestMapping("/user") public class UserController {Autowiredprivate UserService userService;private static final Logger LOG LoggerFactory.getLogger(UserController.class);/*************use…

机器学习核心概念完全解析(建议收藏)

来源&#xff1a;机器学习研究组订阅刚接触机器学习框架 TensorFlow 的新手们&#xff0c;这篇由 Google 官方出品的常用术语词汇表&#xff0c;一定是你必不可少的入门资料&#xff01;本术语表列出了基本的机器学习术语和 TensorFlow 专用术语的定义&#xff0c;希望能帮助您…

科学研究发现:说谎,是儿童成长的里程碑

来源&#xff1a;心灵成长家园&#xff08;ID&#xff1a;xinling_JY&#xff09;科学研究发现&#xff1a;说谎&#xff0c;是儿童成长的里程碑。和成年人的谎言不同&#xff0c;小朋友的谎言&#xff0c;是他们获得一类重要心智能力的标志。许多研究发现&#xff0c;越早学会…

非 GUI 模式运行 JMeter 压力测试

非 GUI 模式&#xff0c;即命令行模式&#xff0c;运行 JMeter 测试脚本能够大大缩减所需要的系统资源。 使用命令&#xff1a;jmeter -n -t <testplan filename> -l <listener filename> -n&#xff1a;非GUI模式 -t&#xff1a;需要执行的脚本文件名&#xff0c;…

第一章 计算机系统概述 1.2.1 计算机硬件的基本组成 [计算机组成原理笔记]

第一章 计算机系统概述 1.2.1 计算机硬件的基本组成 本笔记参考书目&#xff1a; 计算机组成原理&#xff08;第六版.立体化教材&#xff09;白中英、戴志涛2021王道计算机组成原理视频公开课 本节重点&#xff1a; 冯诺依曼机结构现代计算机结构 转载请注明文章来源&#…

2021年中国人工智能产业发展趋势

来源&#xff1a;专知、图灵人工智能人工智能作为新一轮产业变革的核心驱动力&#xff0c;正在释放历次科技革命和产业变革的巨大能量。持续探索新一代人工智能应用场景&#xff0c;将重构生产、分配、交换、消费等经济活动各环节&#xff0c;催生 新技术、新产品、新产业。作为…

javascript性能优化

本文主要是在我读《高性能Javascript》之后&#xff0c;想要记录下一些有用的优化方案&#xff0c;并且就我本身的一些经验&#xff0c;来大家一起分享下&#xff0c; Javascript的加载与执行 大家都知道&#xff0c;浏览器在解析DOM树的时候&#xff0c;当解析到script标签的时…

第一章 计算机系统概述 1.2.2 各硬件部分的介绍 [计算机组成原理笔记]

第一章 计算机系统概述 1.2.2 各硬件部分的介绍 本笔记参考书目&#xff1a; 计算机组成原理&#xff08;第六版.立体化教材&#xff09;白中英、戴志涛2021王道计算机组成原理视频公开课 本节重点&#xff1a; 主存储器、运算器和控制器的基本组成计算机运行过程的实例 转…

GAN网络立功!36分钟,建起5亿光年的宇宙区域

来源&#xff1a;simonsfoundation编译&#xff1a;周熙利用神经网络&#xff0c;Flatiron研究所的研究员Yin Li和他的同事只花费了传统方法所需时间千分之一&#xff0c;就成功模拟了庞大而复杂的宇宙。该方法提出者在5月4日在线发表于《美国国家科学院院刊》的一项研究中报告…

STM32F407 开发环境搭建 程序下载 个人笔记

详细资料&#xff1a; http://www.openedv.com/thread-13912-1-1.html 需要安装的软件&#xff1a; 1.keil&#xff08;MDK&#xff0c;必选&#xff09;&#xff0c;用keygen破解 2.CH340驱动&#xff0c;&#xff08;usb串口驱动&#xff0c;用来下载程序。方便但下载速度较慢…

第一章 计算机系统概述 1.2.3 计算机的多级层次结构 [计算机组成原理笔记]

第一章 计算机系统概述 1.2.3 计算机的多级层次结构 本笔记参考书目&#xff1a; 计算机组成原理&#xff08;第六版.立体化教材&#xff09;白中英、戴志涛2021王道计算机组成原理视频公开课 本节重点&#xff1a; 计算机系统的五层结构&#xff1a;微程序机器、传统机器、…

从多维度解析神经科学中的视觉编码

来源&#xff1a;脑人言一棵树是如何被知觉为“一棵树”&#xff1f;我又是如何认出你是“你”&#xff1f;我们可能会说这很大程度依赖于我们的视觉感知。以后者为例&#xff0c;从你身上反射的光将你的信息传入我眼&#xff0c;当抵达视网膜感受器时&#xff0c;光转换为携带…

linux和windows下忘记mysql密码的几种找回方法

linux和windows下忘记mysql密码的几种找回方法 关于linux忘记mysql密码处理方法&#xff0c;下面提供了5种linux忘记mysql密码找回方法哦。方法一(先进入root权限)&#xff1a;# /etc/init.d/mysql stop# mysqld_safe --usermysql --skip-grant-tables --skip-networking &…

突发!美国最大输油管道遭网络攻击关闭!美媒:为其基础设施的脆弱堪忧

来源&#xff1a;雷锋网&#xff08;leiphone-sz&#xff09;作者&#xff1a;代润泽“这不仅是一条输油管道&#xff0c;可以说已经接近美国基础设施的大动脉。”你能想象&#xff0c;美国最大的燃油管道运营商能因为网络攻击被迫停运&#xff01;CNN网站消息&#xff0c;当地…

old boy

https://www.cnblogs.com/alex3714/articles/5885096.html转载于:https://www.cnblogs.com/dhName/p/9999549.html

第一章 计算机系统概述 1.3 计算机的性能指标 [计算机组成原理笔记]

第一章 计算机系统概述 1.3 计算机的性能指标 本笔记参考书目&#xff1a; 计算机组成原理&#xff08;第六版.立体化教材&#xff09;白中英、戴志涛2021王道计算机组成原理视频公开课 本节重点&#xff1a; 容量计算K/M/G/T单位转换CPU主频/CPI/IPS/FLOPS数据通路带宽/吞吐…

机器学习漫谈:还有很长的路要走

来源&#xff1a;王宏琳科学网博客链接地址&#xff1a;http://blog.sciencenet.cn/blog-3005681-1285948.html 人工智能已经成为大数据、机器人和物联网等新兴技术的主要驱动力&#xff0c;在可预见的未来&#xff0c;它将继续驱动技术创新&#xff0c;影响着几乎每个行业和每…