题意:询问区间最长连续空串

/*
用线段树维护区间最长连续左空串和右空串
*/
#include<cstdio>
#include<iostream>
#define N 50010
using namespace std;
int sum[N*],lsum[N*],rsum[N*],cover[N*],n,m;
void push_up(int k,int l,int r){
int mid=l+r>>;
sum[k]=max(max(sum[k*],sum[k*+]),rsum[k*]+lsum[k*+]);
lsum[k]=lsum[k*];
if(lsum[k*]==mid-l+) lsum[k]+=lsum[k*+];
rsum[k]=rsum[k*+];
if(rsum[k*+]==r-mid) rsum[k]+=rsum[k*];
}
void push_down(int k,int l,int r){
if(!cover[k]) return;
int mid=l+r>>;
if(cover[k]==-){
lsum[k*]=rsum[k*]=sum[k*]=;
lsum[k*+]=rsum[k*+]=sum[k*+]=;
cover[k*]=cover[k*+]=-;
}
else {
lsum[k*]=rsum[k*]=sum[k*]=mid-l+;
lsum[k*+]=rsum[k*+]=sum[k*+]=r-mid;
cover[k*]=cover[k*+]=;
}
cover[k]=;
}
void build(int l,int r,int k){
if(l==r){
cover[k]=;
lsum[k]=rsum[k]=sum[k]=;
return;
}
int mid=l+r>>;
build(l,mid,k*);
build(mid+,r,k*+);
push_up(k,l,r);
}
int query(int l,int r,int k,int x){
if(l==r)return l;
push_down(k,l,r);
int mid=l+r>>;
if(sum[k*]>=x)return query(l,mid,k*,x);
else if(rsum[k*]+lsum[k*+]>=x) return mid-rsum[k*]+;
else return query(mid+,r,k*+,x);
}
void change(int l,int r,int k,int c,int x,int y){
if(l>=x&&r<=y){
cover[k]=c;
lsum[k]=rsum[k]=sum[k]=c==-?:r-l+;
return;
}
push_down(k,l,r);
int mid=l+r>>;
if(x<=mid) change(l,mid,k*,c,x,y);
if(y>mid) change(mid+,r,k*+,c,x,y);
push_up(k,l,r);
}
int main(){
scanf("%d%d",&n,&m);
build(,n,);
for(int i=;i<=m;i++){
int opt,x,y;scanf("%d",&opt);
if(opt==){
scanf("%d",&x);
if(sum[]<x){
printf("0\n");
continue;
}
int p=query(,n,,x);
printf("%d\n",p);
change(,n,,-,p,p+x-);
}
else {
scanf("%d%d",&x,&y);
change(,n,,,x,x+y-);
}
}
return ;
}

Hotel(poj 3667)的更多相关文章

  1. POJ 3667 Hotel(线段树)

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

  2. 01背包问题:Charm Bracelet (POJ 3624)(外加一个常数的优化)

    Charm Bracelet    POJ 3624 就是一道典型的01背包问题: #include<iostream> #include<stdio.h> #include& ...

  3. Scout YYF I(POJ 3744)

    Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5565   Accepted: 1553 Descr ...

  4. 广大暑假训练1(poj 2488) A Knight's Journey 解题报告

    题目链接:http://vjudge.net/contest/view.action?cid=51369#problem/A   (A - Children of the Candy Corn) ht ...

  5. Games:取石子游戏(POJ 1067)

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37662   Accepted: 12594 Descripti ...

  6. BFS 或 同余模定理(poj 1426)

    题目:Find The Multiple 题意:求给出的数的倍数,该倍数是只由 1与 0构成的10进制数. 思路:nonzero multiple  非零倍数  啊. 英语弱到爆炸,理解不了题意... ...

  7. 并查集+关系的传递(poj 1182)

    题目:食物链 题意:给定一些关系.判断关系的正确性,后给出的关系服从之前的关系: 思路:难点不在并查集,在于关系的判断,尤其是子节点与根节点的关系的判断: 这个关系看似没给出,但是给出子节点与父节点的 ...

  8. 昂贵的聘礼(poj 1062)

    Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...

  9. Collecting Bugs(POJ 2096)

    Collecting Bugs Time Limit: 10000MS   Memory Limit: 64000K Total Submissions: 3064   Accepted: 1505 ...

随机推荐

  1. Lumia 刷机(强刷)Message send failed解决办法

    强刷可以救砖,不需要验证地区code,可以跨刷其它国家/地区的固件,但不是所有机型都可以这样,Lumia 620是支持跨刷的. 看本文你首先要知道使用Nokia Care Suite强刷的步骤,参考从 ...

  2. 小程序setData,视图层没有跟新

    如果你完全符合微信介绍的setData使用说明的情况下,发现视图层没有更新,你可以看看我的这种情况. 使用setData的时候,修改的是data中一个对象的值,然后这个对象里面第一层不能含有 numb ...

  3. 字符串逆序-c语言

    给定一个含有n个元素的字符串,实现逆序. 这是个很基础的问题,实现方式也是很常见的c语言思路.虽然简单,但是仍然记录下来. [期望] 比如char str[] = "abcdefg" ...

  4. 网新恩普(W 笔试)

    选择题 1.一桶有黄色,绿色,红色三种,闭上眼睛抓取同种颜色的两个.抓取多少个就可以确定你肯定有两个同一颜色的球? 答案: 4次 1.最坏打算抓3次都是不同颜色的黄.绿.红,此时,三种颜色的球各抓了一 ...

  5. less算宽度 加~ width: calc(~"50% - 35px");

    less算宽度 加~  width: calc(~"50% - 35px");

  6. https://www.runoob.com/python/python-variable-types.html

    https://www.runoob.com/python/python-variable-types.html

  7. Chrome浏览器安装React developer tools

    1. 到 https://github.com/facebook/react-devtools 下载 react-devtools 2. 进入 react-devtools 目录 运行命令  npm ...

  8. git 添加外部项目地址

    github 提交第三方模块流程   // git config --global user.name 'your name' 可以设置全局用户名,在commit记录里显示的是这个配置设置的名称. / ...

  9. Java会话(session)管理

    会话概述 什么是会话 简单的理解:用户打开浏览器,点击多个超链接,访问Web服务器上多个资源,然后关闭浏览器,整个过程称之为一次会话. 需要解决的问题 每个用户在使用浏览器与服务器会话的过程中,会产生 ...

  10. HLS协议分析实现与相关开源代码

        苹果定义的HLS协议,广泛运用在现在很多的流媒体服务器和客户端之间,用以传输直播电视数据流.    具体的协议参照    http://tools.ietf.org/html/draft-pa ...