P4117 [Ynoi2018] 五彩斑斓的世界

Description

题目链接:P4117

给定一个长为 $n$ 的序列,有 $m$ 个操作:

  1. 区间 $[l,r]$ 中大于 $x$ 的数减去 $x$。
  2. 查询区间 $[l,r]$ 中 $x$ 的出现次数。

$1\leq n \leq 10^6,1\leq m \leq 5\times 10^5,1\leq l \leq r\leq n,0\leq a_i,x\leq 10^5+1$

Solution

注意到数值很小,所以可以考虑利用值域。

首先我们记录每个块的最大值。

如果 $Max\leq x\times 2$,那么我们直接暴力把所有大于 $x$ 的数减去 $x$,复杂度为 $O(x)$。

如果 $Max>x\times 2$,那么我们反过来,把小于 $x$ 的数加上 $x$,再打上块内全局减 $x$ 的标记,复杂度为 $O(Max-x)$。

所以总复杂度为 $O(\sqrt{N}V)$。

考虑如何快速维护合并、动态查询单点、个数查询,很显然可以用并查集。

所以时间复杂度为 $O(\sqrt{N}V\alpha(N))$。

注意到此题的空间只有 64MB。

所以考虑把询问离线下来,把每个操作拆分到每个块中即可。

然后稍微卡卡常就过了。

Code

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇