码迷,mamicode.com
首页 > 其他好文 > 详细

HDOJ 4614 Vases and Flowers

时间:2018-01-31 20:21:15      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:ase   表示   输出   lower   线段   hdoj   操作   存在   左右   

题意

下标0到n-1,初始全为0
两种操作:
1 a f 从位置a开始往后,每遇到0就将它变为1,直到改变了f个或者到末尾,输出改变的第一个值和最后一个值的下标
2 x y 把[x,y]所有的值置为0,并输出总共改变了多少个值

分析

线段树维护当前区间还有多少空位tree[o]
lazy标记当前区间全被置空(0)或置满(1),或无标记(-1)
操作1:
1. 先判断从a位置到末尾总共有多少个空位k
    区间查询和
2.输出左值l = 第一个空位下标,输出右值r = 第min(f,k) 个空位下标、
3.将[ l,r] 区间全部置为1即tree[o] = 0
操作2:
    直接将所给区间全部置为0即tree[o] = 区间长度(常规操作!)
    返回值为改变的tree[o]
pushdown:
    如果标记存在
    如果标记为1:将tree左右区间全部赋值为0,表示全满
    如果标记为0:将tree左右区间全部赋值为区间长度,表示全空
    清空当前区间的标记:lazy[o] = -1;


HDOJ 4614 Vases and Flowers

标签:ase   表示   输出   lower   线段   hdoj   操作   存在   左右   

原文地址:https://www.cnblogs.com/greenty1208/p/8393809.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!