NOIP模拟 数据结构(线段树)

【题目描述】

在看了 jiry_2 的课件《Segment Tree Beats!》后,小 O 深深沉迷于这种能单次 O(logn) 支持区间与一个数取 min/max,查询区间和等信息的数据结构,于是他决定做一道与区间与 一个数取 min/max 的好题。

这题是这样的:你得到了一个长度为 n 的数列{ai},要求支持以下 2 种操作:第一种是给 定 L,R,X,要求把区间中比 X 小的数字全部修改为 X;第二种是给定 L,R,K,X,查询区间中比 X 小的最小的 K 个数,并且将它们升序输出,没有则输出-1。

小 O 觉得这题太简单了,于是把这题丢给了你,请你帮忙实现。

下发文件中有 jiry_2 的课件《Segment Tree Beats!》,不保证其与解题有关。(其实真的没关)

【输入格式】

第一行一个数字 n 表示数列长度,

第二行 n 个数字分别表示 a1....an,

第三行一个数字 m 表示操作次数,

接下来 m 行每行表示一次操作,

第一个数 op 表示操作类型,op 可能是 1 或 2,

如果 op=1,后面有 L,R,X 三个正整数表示把区间[L,R]中比 X 小的数字全部改成 X

如果 op=2,后面有 L,R,X,K 四个正整数表示查询区间[L,R]中比 X 小的最小的 K 个数

【输出格式】

对于每个 op=2,输出一行,

如果比 X 小的数达到了 K 个,升序输出最小的 K 个数,

如果比 X 小的数小于 K 个,输出一行一

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值