GMOJ5673 爬山法 題解

2022-10-08 20:36:12 字數 1123 閱讀 3205

顯然先想到處理出每個點能看到的最高的頂點。

然後考慮模擬題目的過程,一段一段走時間複雜度顯然不夠優秀。

考慮我們要求什麼,我們需要求出\(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 約會

農場主約翰養了兩群有世仇的牛,它們被稱為蒙塔戈斯家族和卡普魯特家族。蒙塔戈斯家族的成員,羅密歐,愛上了美麗的朱麗葉,但後者正好是卡普魯特家族的成員。羅密歐希望與朱麗葉約會,但不希望卡普魯特家族的其他成員發現 否則會有可怕的事情發生!羅密歐和朱麗葉希望在牧場柵欄邊一塊盡可能大的區域中相見,這樣他們可以...