1
间隔图的数据结构
令nnn为整数,令ZZ\mathbb{Z}表示所有整数的集合。令[a,b][a,b][a,b]表示整数的间隔{a,a+1,a+2,…,b}{a,a+1,a+2,…,b}\{a,a+1,a+2,\dots,b\}。 我正在寻找一种数据结构来表示映射f:[1,n]→Zf:[1,n]→Zf:[1,n] \to \mathbb{Z}。我希望数据结构支持以下操作: get(i)get(i)\text{get}(i)应该返回f(i)f(i)f(i)。 set([a,b],y)set([a,b],y)\text{set}([a,b],y)应更新fff使得f(a)=f(a+1)=⋯=f(b)=yf(a)=f(a+1)=⋯=f(b)=yf(a)=f(a+1)=\cdots=f(b)=y,即更新fff到一个新的地图f′f′f'使得f′(i)=yf′(i)=yf'(i) = y用于i∈[a,b]i∈[a,b]i \in [a,b]并且f′(i)=f(i)f′(i)=f(i)f'(i) = f(i)为i∉[a,b]i∉[a,b]i \notin [a,b]。 应该返回最大间隔 [ 一,b ],使得我∈ [ 一,b ]并且 ˚F是常数 [ 一,b ](即, ˚F (一)= ˚F (一个+ 1 )= ⋯ = ˚F (b ))。stab(i)stab(i)\text{stab}(i)[a,b][a,b][a,b]i∈[a,b]i∈[a,b]i \in [a,b]fff[a,b][a,b][a,b]f(a)=f(a+1)=⋯=f(b)f(a)=f(a+1)=⋯=f(b)f(a)=f(a+1)=\cdots=f(b) 应更新 ˚F到一个新的地图 ˚F '使得 ˚F '(我)= ˚F (我)+ δ为我∈ [ 一,b ]并且 …