第一次写区间合并的题目,实在有点棘手,就顺着TK学长的思路敲了一编代码,但还是磕磕绊绊的,继续敲一道区间合并的题吧

#include <cstdio>
#define size 500010
#define Lson (x<<1),l,mid
#define Rson (x<<1|1),mid+1,r
int flag[size<<2],lc[size<<2],rc[size<<2],mc[size<<2];int  max(int a,int b)
{return a>b?a:b;
}void buildtree(int rt,int L,int R)
{flag[rt] = -1;lc[rt]=rc[rt]= mc[rt]= R-L+1;//printf("%d",mc[1]);if(L==R){return ;}int mid = (L+R)/2;buildtree(rt*2,L,mid);buildtree(rt*2+1,mid+1,R);
}void pushdown(int rt,int l,int r)
{if(flag[rt]!= -1){int mid = (l+r)/2;flag[rt<<1]= flag[rt<<1|1]= flag[rt];mc[rt<<1]= lc[rt<<1]= rc[rt<<1] = flag[rt]?0:mid-l+1;mc[rt<<1|1]= lc[rt<<1|1] = rc[rt<<1|1]= flag[rt]?0:r-mid;flag[rt] = -1;}
}int query(int a,int rt,int l,int r)
{if(l==r){return l;}pushdown(rt,l,r);int mid = (l+r)/2;if(mc[rt<<1]>=a){return query(a,rt*2,l,mid);}else if(lc[rt*2+1]+rc[rt*2]>= a){return mid-rc[rt<<1]+1;}elsereturn query(a,rt*2+1,mid+1,r);
}void getup(int x,int l,int r)
{int mid=(l+r)/2;mc[x]=max(mc[x<<1],mc[x<<1|1]);mc[x]=max(mc[x],lc[x<<1|1]+rc[x<<1]);lc[x]=lc[x<<1]+ (lc[x<<1]==mid-l+1? lc[x<<1|1]:0);rc[x]=rc[x<<1|1]+(rc[x<<1|1]==r-mid? rc[x<<1]:0);
}void color(int rt,int l,int r,int c,int L,int R)
{if(L<=l&&r<=R){flag[rt] = c;mc[rt]= lc[rt]= rc[rt] = c?0:r-l+1;return ;}pushdown(rt,l,r);int mid = (l+r)/2;if(L<=mid)color(rt*2,l ,mid,c,L,R);if(R>mid)color(rt*2+1,mid+1,r,c,L,R);getup(rt,l,r);
}int main()
{int n,m;while(scanf("%d%d",&n,&m)!=EOF){buildtree(1,1,n);while(m--){int a,b,c;scanf("%d",&a);if(a==1){scanf("%d",&b);if(mc[1]<b)puts("0");else{//puts("hahhahahha");int ans=query(b,1,1,n);printf("%d\n",ans);color(1,1,n,1,ans,ans+b-1);}}else{scanf("%d%d",&b,&c);color(1,1,n,0,b,b+c-1);}}}return 0;
}

  

转载于:https://www.cnblogs.com/DUANZ/p/3899647.html

poj3667 hotel相关推荐

  1. 数据结构---线段树

    线段树 转载请注明出处,谢谢!http://blog.csdn.net/metalseed/article/details/8039326  持续更新中···   一:线段树基本概念 1:概述 线段树 ...

  2. 【转】线段树题目 汇总 讲解(by not only success)

    转载自:http://www.notonlysuccess.com/ 非常喜欢他的代码风格以及简洁的思路,感谢notonlysuccess! PS:他的个人网站好像是上不去了-.- 线段树 很早前写的 ...

  3. ACM大牛总结的线段树专辑

    https://blog.csdn.net/qq_25605637/article/details/46967529 [完全版]线段树 很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章 ...

  4. 【转载】完全版线段树 by notonlysuccess大牛

    原文出处:http://www.notonlysuccess.com/ 今晚上比赛就考到了 排兵布阵啊,难受. [完全版]线段树 很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章,当时 ...

  5. 转载自杭电大牛的博客 线段树 绝对经典

    转载自:http://www.notonlysuccess.com/ 不可不看的经典 学线段树必看,大牛很多,给后人留下记录的却没有几个,谢谢这位大牛~! 因为我这最近他博客打不开了...特意从别人那 ...

  6. 线段树模板(来自胡浩大牛)

    http://www.notonlysuccess.com/(今天看二叉树,想回来看看,发现大牛博客进不去...) 如果要学,就要好好学.我copy的,如有错,请看http://www.cnblogs ...

  7. html特殊符号不显示,HTML特殊符号显示技巧

    linux命令每日一练习 解压命令 .tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)------- ...

  8. 大牛整理的线段树集锦

     转载自:http://www.notonlysuccess.com/ 膜拜之... [完全版]线段树 很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章,当时觉得挺自豪的,还去pk ...

  9. ACM_大牛总结的线段树专辑

    附上原出处:http://blog.csdn.net/qq_25605637/article/details/46967529 [完全版]线段树 这是从大牛那里粘过来的总结,对于刚训练线段树的我来说帮 ...

  10. POJ 3667 Hotel(线段树)

    POJ 3667 Hotel 题目链接 题意:有n个房间,如今有两个操作 1.找到连续长度a的空房间.入住,要尽量靠左边,假设有输出最左边的房间标号,假设没有输出0 2.清空[a, a + b - 1 ...

最新文章

  1. teechart属性和方法
  2. [Machine Learning] Random Forest 随机森林
  3. java spring注入 静态方法_java相关:spring为类的静态属性实现注入实例方法
  4. AI新时代-大神教你使用python+Opencv完成人脸解锁(附源码)
  5. CCF CSP202006-1 线性分类器
  6. 三菱fx3u中文手册_3个月高效掌握三菱PLC!四个阶段经验大总结~
  7. 【Atcoder】ARC082 E - ConvexScore
  8. 外卖行业现状分析_2020年中国外卖行业市场现状和发展趋势分析 外卖下沉趋势明显「组图」...
  9. php学习日志(5)-解决Windows Live Writer错误:WindowsLive.Writer.CoreServices.HttpRequestHelper的类型初始值设定发生异常...
  10. 如何画好室内手绘效果图,非常值得…
  11. 智学网登录不了java_智学网常见问题解答
  12. iOS中更新版权 Copyright
  13. python画三维立体图-Python 绘制酷炫的三维图步骤详解
  14. android 表格布局行高,表格分割线怎么设置 先把行高调整到合适高度
  15. 开关电源雷击浪涌整改_防雷击浪涌的开关电源电路设计
  16. 新浪微博AIR客户端开发---登陆
  17. R语言 同Excel的sumif功能,对相同一个变量里面相同的元素进行合并,相同的行进行相加
  18. Font '宋体' is not available to the JVM. See the Javadoc for more details.
  19. Linux Shell脚本编程入门
  20. PTA-孔融分梨(函数实现)

热门文章

  1. 如何计算给定一个unigram语言模型_数位语音处理Lesson3-初识前端信号处理、语言模型...
  2. oracle查询所有表名_oracle删错数据了,要跑路吗,等一下,先抢救一下
  3. 多线程任务执行后发送通知,CyclicBarrier使用
  4. IDEA配置插件,插件使编程更快速
  5. adb命令连接模拟器,could not read ok from ADB Server
  6. [渝粤教育] 云南大学 內部控制理论与实务 参考 资料
  7. 【渝粤教育】国家开放大学2018年秋季 2707T种植业基础 参考试题
  8. 【渝粤教育】国家开放大学2018年春季 0001-21T入学教育与终身学习指引 参考试题
  9. 【渝粤教育】广东开放大学 个人与团队管理 形成性考核 (47)
  10. [翻译] ASP.NET MVC Framework控制器操作安全性