Hotel(poj 3667)
题意:询问区间最长连续空串
/*
用线段树维护区间最长连续左空串和右空串
*/
#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)的更多相关文章
- POJ 3667 Hotel(线段树)
POJ 3667 Hotel 题目链接 题意:有n个房间,如今有两个操作 1.找到连续长度a的空房间.入住,要尽量靠左边,假设有输出最左边的房间标号,假设没有输出0 2.清空[a, a + b - 1 ...
- 01背包问题:Charm Bracelet (POJ 3624)(外加一个常数的优化)
Charm Bracelet POJ 3624 就是一道典型的01背包问题: #include<iostream> #include<stdio.h> #include& ...
- Scout YYF I(POJ 3744)
Scout YYF I Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5565 Accepted: 1553 Descr ...
- 广大暑假训练1(poj 2488) A Knight's Journey 解题报告
题目链接:http://vjudge.net/contest/view.action?cid=51369#problem/A (A - Children of the Candy Corn) ht ...
- Games:取石子游戏(POJ 1067)
取石子游戏 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 37662 Accepted: 12594 Descripti ...
- BFS 或 同余模定理(poj 1426)
题目:Find The Multiple 题意:求给出的数的倍数,该倍数是只由 1与 0构成的10进制数. 思路:nonzero multiple 非零倍数 啊. 英语弱到爆炸,理解不了题意... ...
- 并查集+关系的传递(poj 1182)
题目:食物链 题意:给定一些关系.判断关系的正确性,后给出的关系服从之前的关系: 思路:难点不在并查集,在于关系的判断,尤其是子节点与根节点的关系的判断: 这个关系看似没给出,但是给出子节点与父节点的 ...
- 昂贵的聘礼(poj 1062)
Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...
- Collecting Bugs(POJ 2096)
Collecting Bugs Time Limit: 10000MS Memory Limit: 64000K Total Submissions: 3064 Accepted: 1505 ...
随机推荐
- CF749D Leaving Auction
题目链接: http://codeforces.com/problemset/problem/749/D 题目大意: 一场拍卖会,共n个买家.这些买家共出价n次,有的买家可能一次都没有出价.每次出价用 ...
- placeholder字体样式及兼容
样式修改css::-webkit-input-placeholder { /* WebKit browsers */ color: #fff!important;}:-moz-placeholder ...
- Chrome插件制作
由于网上很难找到关于Chrome插件制作的中文教程,为了总结和方便更多的开发者,本文以最常见的显示效果为browser_action的二维码插件为例,进行相关阐述.前端童鞋开发的话应该很简单的,鄙人是 ...
- 1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括: 正确的使用数据库MetaData方法 只获取需要的数据 选用最佳性能的功能 管理连
1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你. 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的 ...
- SQL的top 100 percent用法
sql="select top 30 * from data where title='"&title1&"' order by id desc" ...
- 解决python pip安装提示"not a supported wheel on this platform"
python下载.whl安装文件后使用pip安装有时候会提示报错"xxxxx not a supported wheel on this platform",应该是下载的库文件版本 ...
- html归纳
onload的用法 表格属性 定时器(测试能否让for循环暂停5秒) 实现表格的滚动条效果 ① table中th的样式: white-space: nowrap; 单元格内容不换行:② 设置装 ...
- JavaSE-25 AWT
学习要点 关于AWT AWT容器 布局管理器 AWT组件 事件处理 关于AWT java.awt包与子包 AWT软件包 说明 import java.awt.*; 基本组件使用工具 import ...
- 如何卸载eclipse中的pydev
在Eclipse中依次点击菜单"Help"->"About Eclipse". 点击"Installation Details"按钮, ...
- ios 封装sqllite3接口
2013-03-25 17:41 261人阅读 评论(0) 收藏 举报 // #import <Foundation/Foundation.h> #import "sqlite3 ...