hdu4553(线段树)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4553
线段树功能:update:区间替换 query:询问满足条件的最左断点
分析:poj3667的加强版,这里需要在每个区间内设置女神区间和屌丝区间,每次询问女神的时候,先看屌丝区间有无空位,有就插到屌丝区间内,同时更新女神区间,否则插到女神区间内,但同时也要更新屌丝区间,因为只有女神可以占用屌丝的时间,屌丝不能占用女神的时间,每次更新屌丝区间的时候直接更新即可,清空的话就是对屌丝和女神的区间都清空。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
#define M 1000000000
#define maxn 55555
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
int lsum[maxn<<],rsum[maxn<<],sum[maxn<<];
int col[maxn<<];
void PushDown(int rt,int m)
{
if(col[rt]!=-)
{
col[rt<<]=col[rt<<|]=col[rt];
sum[rt<<]=lsum[rt<<]=rsum[rt<<]=col[rt]?:m-(m>>);
sum[rt<<|]=lsum[rt<<|]=rsum[rt<<|]=col[rt]?:m>>;
col[rt]=-;
}
}
void PushUp(int rt,int m)
{
lsum[rt]=lsum[rt<<];
rsum[rt]=rsum[rt<<|];
if(lsum[rt]==m-(m>>))lsum[rt]+=lsum[rt<<|];
if(rsum[rt]==m>>)rsum[rt]+=rsum[rt<<];
sum[rt]=max((lsum[rt<<|]+rsum[rt<<]),max(sum[rt<<],sum[rt<<|]));
}
void build(int l,int r,int rt)
{
col[rt]=-;
sum[rt]=lsum[rt]=rsum[rt]=r-l+;
if(l==r)return;
int m=(r+l)>>;
build(lson);
build(rson);
}
void update(int L,int R,int c,int l,int r,int rt)
{
if(L<=l&&r<=R)
{
sum[rt]=lsum[rt]=rsum[rt]=c?:r-l+;
col[rt]=c;
return;
}
PushDown(rt,r-l+);
int m=(r+l)>>;
if(L<=m)update(L,R,c,lson);
if(R>m)update(L,R,c,rson);
PushUp(rt,r-l+);
}
int query(int w,int l,int r,int rt)
{
if(l==r)return l;
PushDown(rt,r-l+);
int m=(r+l)>>;
if(sum[rt<<]>=w)return query(w,lson);
else if(rsum[rt<<]+lsum[rt<<|]>=w)return m-rsum[rt<<]+;
else return query(w,rson);
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)>)
{
build(,n,);
while(m--)
{
int a,b,op;
scanf("%d",&op);
if(op==)
{
scanf("%d",&a);
if(sum[]<a)puts("");
else
{
int ans=query(a,,n,);
printf("%d\n",ans);
update(ans,ans+a-,,,n,);
}
}
else
{
scanf("%d%d",&a,&b);
update(a,a+b-,,,n,);
}
}
}
}
hdu4553(线段树)的更多相关文章
- hdu4553约会安排 线段树
//DS QT 找一段最靠前的长度为QT的空间 //NS QT 找一段最靠前的长度为QT的空间.假设没找到能够将DS占领的空间当做空暇空间,找一段最靠前的空间 //STUDY!! L R 清空L ...
- hdu4553 约会安排 线段树
寒假来了,又到了小明和女神们约会的季节. 小明虽为屌丝级码农,但非常活跃,女神们常常在小明网上的大段发言后热情回复“呵呵”,所以,小明的最爱就是和女神们约会.与此同时,也有很多基友找他开黑,由于数量实 ...
- 约会安排---hdu4553(线段树,麻烦的区间覆盖)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4553 算是poj3667的加强版,建立两颗线段树,一个是DS区间,另一个是NS区间.那么根据题意, ...
- HDU-4553 约会安排(线段树维护连续区间)
http://acm.hdu.edu.cn/showproblem.php?pid=4553 Problem Description 寒假来了,又到了小明和女神们约会的季节. 小明虽为屌丝级码农,但 ...
- bzoj3932--可持久化线段树
题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...
- codevs 1082 线段树练习 3(区间维护)
codevs 1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...
- codevs 1576 最长上升子序列的线段树优化
题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...
- codevs 1080 线段树点修改
先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...
- codevs 1082 线段树区间求和
codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...
随机推荐
- 修改合同号的bapi
这个例子是在合同号中新增项目号: 1.先要读取该合同号的信息用一个BAPI BAPI_CONTRACT_GETDETAIL 2.调用修改合同号的BAPI. 代码如下: REPORT ztest_cla ...
- 0 and 1
Description Andrewid the Android is a galaxy-famous detective. In his free time he likes to think ab ...
- Mac AppStore 登陆提示 未知错误
Mac Book 登陆的时候提示未知错误,刚开始以为是需要内建网卡后来才得知: 如果是黑苹果,或者是网卡没有对应上的,需要内建网卡 mac 系统默认的是无线网卡en0 其他都网卡 以此类推 如果是ma ...
- Spark Sreaming与MLlib机器学习
Spark Sreaming与MLlib机器学习 本来这篇是准备5.15更的,但是上周一直在忙签证和工作的事,没时间就推迟了,现在终于有时间来写写Learning Spark最后一部分内容了. 第10 ...
- 控件编写:增强 TMEMO (一)(增加对WM_HSCROLL消息的处理)
相信没有什么人对 MEMO 陌生了吧.尽管其组件的功能不错.但是,对它进行一些功能的改进,可以更好的使用. 有的时候,我们想要知道,当前的坐标是什么?甚至,想要在 滚动条滚动时触发一些事件. 但,TM ...
- 5大AR应用窥探移动未来~你见过吗?
摘要:随着可穿戴设备的不断升温,尤其是Google Glass的出现,让AR技术再次走进我们的视线.以下尾随DevStore小编看看这5款优秀的AR应用,有木有闪到你的眼~ 眼下移动开发人员可选的AR ...
- SAP ABAP exporting list to memory ...SUBMIT 程序传输屏幕参数
SUBMIT report EXPORTING LIST TO MEMORY AND RETURN. submit 关键字的作用就是在程序内部调用一个程序,and retur ...
- ListCtrl控件着色
最近在写一款山寨的反病毒软件,大致功能已经实现,还有一些细小的环节需要细化. 其中,在界面编程中,就用到了给ListCtrl控件着色,查看了网上一些文章,终于实现了. 其实说白了,原理很简单,就是Li ...
- 爱的歌我uhegierhiuerh5怕哦一
http://www.huihui.cn/share/8424421 http://www.huihui.cn/share/8424375 http://www.huihui.cn/share/842 ...
- perl lwp 获取请求头
<pre name="code" class="html">[root@dr-mysql01 ~]# cat getx.pl use LWP::Us ...