CH1301 鄰值查詢

2021-09-12 12:28:21 字數 740 閱讀 6765

給定乙個長度為 n 的序列 a,a 中的數各不相同。對於 a 中的每乙個數 a

ia_i

ai​,求:

m in

(1≤j

⁡∣ai

−aj∣

min(1≤jmi

n(1≤

j⁡∣ai

​−aj

​∣以及令上式取到最小值的 j(記為 p

ip_i

pi​)。若最小值點不唯一,則選擇使 a

ja_j

aj​ 較小的那個。

題解:可以借助set來實現,set的查詢是o(log n)的,最終的時間複雜度大約為o(n log n)

#include

#include

#include

#define ll long long

using namespace std;

const

int inf=

0x3f3f3f3f

;int n;

int ans;

struct node

return val;set s;

set::iterator it,l,r;

intmain()

else

if(r==s.

end())

else

else}}

}return0;

}

鄰值查詢CH1301(平衡樹)

給定乙個長度為 n 的序列 a,a 中的數各不相同。對於 a 中的每乙個數 a i 求 m i n 1 j i a i a j 以及令上式取到最小值的 j 記為 p i 若最小值點不唯一,則選擇使 a j 較小的那個。資料範圍 n 105 ai 109 題解 可以借助set來實現,set的查詢是o ...

演算法競賽高階指南 CH1301鄰值查詢(set)

題目描述 給定乙個長度為 n 的序列 a,a 中的數各不相同。對於 a 中的每乙個數 ai,求 min1 j輸入格式 第一行輸入整數n,代表序列長度。第二行輸入n個整數a1 an,代表序列的具體數值,數值之間用空格隔開。輸出格式 輸出共n 1行,每行輸出兩個整數,數值之間用空格隔開。分別表示當i取2...

1301 鄰值查詢(set 平衡樹 鍊錶)

描述 給定乙個長度為 n 的序列 a,a 中的數各不相同。對於 a 中的每乙個數 a i,求 min 1 j輸入格式 第一行乙個整數n,第二行n個數a 1 a n。輸出格式 n 1行,每行2個用空格隔開的整數。分別表示當i取2 n時,對應的 min 1 j樣例輸入 3 1 5 3 樣例輸出4 1 2...