T1:
显然主席树傻逼题
不过
s
t
d
std
std强行卡空间
胡的一个
O
(
n
)
O(n)
O(n)空间似乎是假的
主席树强行用一些东西卡空间
对于叶子不需要左右儿子
剩下鬼畜东西没看懂
u
p
d
a
t
e
d
:
updated:
updated:
有靠谱的
O
(
n
n
)
时
间
O
(
n
)
O(n\sqrt n)时间O(n)
O(nn)时间O(n)空间做法了
考虑对序列分块
考虑将修改变成差分数列
那么每个点会修改两个位置
那么每一块会被修改
O
(
n
)
O(\sqrt n)
O(n)次
维护每个时间块内前缀最大和块内和
考虑询问
对修改操作序列分块
每
n
\sqrt n
n个位置维护一下所有块的最后修改时间
然后递推一下散块位置即可
T2:
考虑判断一个线段
(
a
,
b
)
(a,b)
(a,b)和一个圆
O
O
O的关系
可以做
a
a
a对
O
O
O的切线
然后判是否在夹角
为了减去一些边界考虑
可以定一个基准向量
然后将所有表示成与基准相量的夹角在
(
l
,
r
)
(l,r)
(l,r)之间
由于一个点切线夹角小于
π
\pi
π
表示在
[
−
π
,
π
]
[-\pi,\pi]
[−π,π]之间即可
T3:
由于没想到可以有非法情况
直接写的挂了
考虑将大小关系连边后缩点
显然次数是点数
先把相等的忽略
考虑一种枚举被算的次数除以
n
!
n!
n!
对应出来就是拓扑序个数
/
n
!
/n!
/n!