ZJOI2018 胖(ST表 二分)

2022-04-29 22:21:11 字數 1001 閱讀 9952

不開 \(o_2\) 又沒卡過去是種怎麼體驗。。。

這可能是 \(zjoi2018\) 最簡單的一題了。。。我都能 \(a\)。。。

首先我們發現這個奇怪的圖每個點擴充套件的是乙個區間 \([l,r]\),然後我們就可以二分端點了。

乙個點 \(x\) 擴充套件到點 \(y\) 至少要 \(|x-y|\) 的時間,所以我們把 \(a_i\) 排個序,在上面二分乙個合法的區間使得 \(|x-a_l|\leq t\) 且 \(|x-a_r|\leq t\)

然後若能擴充套件到 \(y\),那麼 \(0\) 號點到 \(y\) 號點的距離為 \(|dis_y-dis_x|+l\)。我們用兩個 \(st\) 表把絕對值拆掉,分別維護最小值即可。

時間複雜度 \(o(n\log^2 n)\)

為什麼 \(dl\) 出題人會出到 \(2\times 10^5\)。。。兩個 \(\log\) 一般只出到 \(10^5\) 的啊。。。

\(code\ below:\)

// luogu-judger-enable-o2

#include #define ll long long

using namespace std;

const int maxn=200000+10;

int n,m,k,w[maxn],lg[maxn];ll dis[maxn];

struct node

}a[maxn];

inline bool operator < (const node &a,const node &b)

inline bool check2(int x,int y)

inline int solve1(int x)

return ans;

}inline int solve2(int x)

return ans;

}int main()

ll ans;

while(m--)

return 0;

}

ZJOI2018 胖 二分 ST表

略。首先這個題目名稱用來形容 cly 太好了。考慮每一對 a i,l i 對於答案的貢獻。我們可以發現每一條這種路徑能夠更新的節點是連續的一段。於是我們考慮二分邊界。設 x 為當前節點,我們當前二分到的節點為 y 如果 x 不能更新節點 y 那麼,在區間 x,2y x 中必然存在乙個點到 y 的最短...

ZJOI2018二試遊記

zjoi2018果然比hnoi2018 本菜雞騙了200,分數上肯定比zjoi多 良心多了,一試和二試都是,每次都有幾天聽課。重點是 zjoi有飯吃!上午從學校出發,坐了4個小時來到yy,中午自己解決,晚飯在yyzx的食堂吃了幾個月來最 的飯菜 綠豆湯裡有生的綠豆?想到明天要聽課,於是晚上逛了逛知乎...

ZSTU 4241 聖杯戰爭(ST表 二分)

題目鏈結 zstu 4241 問題轉化為有很多區間,現在每次給定乙個區間求這個區間和之前所有區間中的某乙個的交集的最大長度。首先我們把所有的區間預處理出來。然後去重 那些被包含的小區間可以去掉 再根據左端點公升序排序。這樣的話這些區間的右端點也是嚴格公升序的。現在對於給定的 x,y 所有區間大概可以...