給定乙個長度為 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(log n)的,最終的時間複雜度大約為o(n log n)
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
const
int u=
100010
;int h[u]
, g[3]
, n, m, p;
struct rec
;set s;
set::iterator it,lt,rt;
bool
operator
<
(rec a,rec b)
bool
cmp(
int a,
int b,
int i)
intmain()
}return0;
}
CH1301 鄰值查詢
給定乙個長度為 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 較小的那個。題解 可以借...
C rimer 學習筆記 ch13 複製控制
第十三章 複製控制 1.複製建構函式具有單個形參,該形參 常用const修飾 是對該類型別的引用,當定義乙個新物件並用乙個同型別的物件對它進行初始化時,將顯式使用複製建構函式,當將該型別的物件傳遞給函式或從函式返回該型別的物件時,將隱式使用複製建構函式 2.不管類是否定義了自己的析構函式,編譯器都自...
演算法競賽高階指南 CH1301鄰值查詢(set)
題目描述 給定乙個長度為 n 的序列 a,a 中的數各不相同。對於 a 中的每乙個數 ai,求 min1 j輸入格式 第一行輸入整數n,代表序列長度。第二行輸入n個整數a1 an,代表序列的具體數值,數值之間用空格隔開。輸出格式 輸出共n 1行,每行輸出兩個整數,數值之間用空格隔開。分別表示當i取2...