做非法网站怎么判刑,辽宁省工程建设信息网官网,网站开发与设计.net,wordpress转发微信缩略图题目截图 题目分析
每次1操作将会分裂成两块区间长度#xff0c;以最近右端点记录左侧区间的长度即可 因此涉及到单点更新和区间查询 然后左右侧最近端点则使用redBlackTree#xff0c;也就是python中的sortedlist
ac code
type seg []int// 把 i 处的值改成 val
func (t …题目截图 题目分析
每次1操作将会分裂成两块区间长度以最近右端点记录左侧区间的长度即可 因此涉及到单点更新和区间查询 然后左右侧最近端点则使用redBlackTree也就是python中的sortedlist
ac code
type seg []int// 把 i 处的值改成 val
func (t seg) update(o, l, r, i, val int) {if l r {t[o] valreturn}m : (l r) 1if i m {t.update(o1, l, m, i, val)} else {t.update(o1|1, m1, r, i, val)}t[o] max(t[o1], t[o1|1])
}// 查询 [0,R] 中的最大值
func (t seg) query(o, l, r, R int) int {if r R {return t[o]}m : (l r) 1if R m {return t.query(o1, l, m, R)}return max(t[o1], t.query(o1|1, m1, r, R))
}func getResults(queries [][]int) (ans []bool) {m : 0for _, q : range queries {m max(m, q[1])}mset : redblacktree.New[int, struct{}]() // kv对v就这样摆着先set.Put(0, struct{}{}) // 哨兵set.Put(m, struct{}{})t : make(seg, 2bits.Len(uint(m)))for _, q : range queries {x : q[1]pre, _ : set.Floor(x - 1) // x 左侧最近障碍物的位置if q[0] 1 {nxt, _ : set.Ceiling(x) // x 右侧最近障碍物的位置set.Put(x, struct{}{})t.update(1, 0, m, x, x-pre.Key) // 更新 d[x] x - pret.update(1, 0, m, nxt.Key, nxt.Key-x) // 更新 d[nxt] nxt - x} else {// 最大长度要么是 [0,pre] 中的最大 d要么是 [pre,x] 这一段的长度maxGap : max(t.query(1, 0, m, pre.Key), x-pre.Key)ans append(ans, maxGap q[2])}}return
}