(针对整数二分)
sit1.最后成功二分到准确点,直接输出答案。
sit2.最后二分只剩下两个点的时候,必定是一个多了一个少了,那我们要做的就是找到哪一个是正确的斜率。方法很简单,设较小的一个斜率为 x x x,则较大的斜率为 x + 1 x+1 x+1。若 x + 1 x+1 x+1的切点被 x x x穿过,那么 x x x是正确斜率,若 x x x的切点被 x + 1 x+1 x+1穿过,那么 x + 1 x+1 x+1是正确斜率。
形式化的说:若
f
f
f和
g
g
g的函数表达式为
f
[
x
]
=
g
[
x
]
+
k
∗
x
f[x]=g[x]+k*x
f[x]=g[x]+k∗x,设
x
x
x的切点为
a
a
a,
x
+
1
x+1
x+1的切点为
b
b
b,若
x
∗
b
.
x
+
g
[
x
]
=
b
.
y
x*b.x+g[x]=b.y
x∗b.x+g[x]=b.y(已知的是
x
∗
a
.
x
+
g
[
x
]
=
a
.
y
x*a.x+g[x]=a.y
x∗a.x+g[x]=a.y),那么正确的斜率就是
x
x
x。
(以上切点是指当前斜率与凸包的切点,是一个二元组)