顯然先想到處理出每個點能看到的最高的頂點。
然後考慮模擬題目的過程,一段一段走時間複雜度顯然不夠優秀。
考慮我們要求什麼,我們需要求出\(u\)到\(v\)的最近的乙個點,使得這個點能看到的點比\(v\)能看到的點更高。
然後這個東西可以直接線段樹,當然也可以二分+st表
複雜度\(o(n\log n)\)
#include #include #define ll long long
#define re register
#define in inline
using namespace std;
in int read()
int n, le[2000010], ri[2000010], nxt[2000010], st[2000010][20], lg[2000010];
ll f[2000010];
struct point p[2000010];
inline double slope(int x, int y)
inline bool cmp(int x, int y)
int stk[2000010];
inline int pmax(int x, int y)
void prework()
top = 0;
for(int i = n; i; --i)
for(int i = 1; i <= n; ++i)
for(int i = 1; i <= lg[n]; ++i)
for(int j = 1; j <= n; ++j)
st[j][i] = pmax(st[j][i - 1], st[j + (1 << i - 1)][i - 1]);
return ;
}inline ll abs(int x)
inline int query(int l, int r)
ll solve(int k)
} else
} f[k] = solve(res) + abs(res - k);
return f[k];
}void out(int x)
int main() ```
HDU 5673 catalan數的應用
分析 記路徑長度為n n,那麼機械人最多向右走 lfloor frac rfloor 2 n 步並向左走 lfloor frac rfloor 2 n 步。ans n sum rfloor c n catalan i an s n i 0 2 n c n 2i ca tala n i 其中catal...
2020寒假 gmoj2380 白板
pywbktda有一塊白板,這塊白板的四條邊分別平行於座標軸。我們可以假設這塊白板的左 下角在 x 1 y 1 位置,右上角在 x 2 y 2 位置。現在有兩塊黑板放到白板的上面,這兩塊黑板的四條邊也是平行於座標軸的。我們可以設第1塊 黑板的左下角是 x 3 y 3 右上角在 x 4 y 4 位置,...
2020寒假 gmoj1876 約會
農場主約翰養了兩群有世仇的牛,它們被稱為蒙塔戈斯家族和卡普魯特家族。蒙塔戈斯家族的成員,羅密歐,愛上了美麗的朱麗葉,但後者正好是卡普魯特家族的成員。羅密歐希望與朱麗葉約會,但不希望卡普魯特家族的其他成員發現 否則會有可怕的事情發生!羅密歐和朱麗葉希望在牧場柵欄邊一塊盡可能大的區域中相見,這樣他們可以...