更好的阅读体验
CF249D - Donkey and Stars
Description
给定 n n n 个点 ( x i , y i ) (x_i,y_i) (xi,yi) 和 a , b , c , d a,b,c,d a,b,c,d,求出最多有多少个点依次连接而成的折线上线段的斜率在 ( a b , c d ) (\frac{a}{b},\frac{c}{d}) (ba,dc),其中第 1 1 1 条折线的起点必须在坐标原点且坐标原点不计入答案。
1 ≤ n ≤ 1 0 5 , 0 ≤ a , b , c , d ≤ 1 0 5 , 1 ≤ x i , y i ≤ 1 0 5 1\le n\le 10^5,0\le a,b,c,d\le 10^5,1\le x_i,y_i\le 10^5 1≤n≤105,0≤a,b,c,d≤105,1≤xi,yi≤105
Solution
不难想到通过 DP 来求解,暴力 DP 时间复杂度为 O ( n 2 ) O(n^2) O(n2),必然是过不去的。所以,考虑对于点 i i i,能够与 i i i 连线的点 j j j 应满足哪些性质?
令
i
i
i 点位于
j
j
j 点的右上方,则有
a
b
<
y
i
−
y
j
x
i
−
x
j
<
c
d
\frac{a}{b}< \frac{y_i-y_j}{x_i-x_j}<\frac{c}{d}
ba 综上所述,可以做到
O
(
n
log
n
)
O(n\log n)
O(nlogn)。Code
#include
还没有评论,来说两句吧...