給定乙個長度為 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...