救救兔兔(二分入門)

2021-09-11 07:01:52 字數 1132 閱讀 5966

某天,乙隻可愛的小兔砸在路上蹦蹦跳跳地走著,怪人pm6出現了,於是小兔子被盯上了。

pm6:「免子。哦不,小兔子。你長得真好…不對,真可愛。我這裡有一道很容易很容易的題目,答對了我就請你吃蘿蔔,答錯了你就請我吃兔肉,好不好呀~~?」

小兔砸:「蘿蔔!?好呀好呀好呀。」於是笨笨的兔紙入套了。

pm6:「我這裡有乙個由 n 個數組成的序列,給你 m 個詢問,每個詢問會給你乙個數 x ,對於每個詢問,你要回答出序列中與這個值最接近的元素。」

聽完題後,兔子嚇成一坨免子了,面臨著變成紅燒兔頭的危險,求求你救救兔子!

第一行包含乙個整數n,為序列長度。

第二行包含n個整數,為序列各元素。

第三行包含乙個整數m,為pm6的詢問個數。

接下來m行,每行乙個整數x,為要詢問最接近元素的給定值。

對於40%的資料:1<=n<=10000,1<=m<=1000

對於另外10%的資料:m=1

對於100%的資料:1 <=n<= 100000,1<=m<=10000,0<=序列中的每個數,x<=1e9

m行,每行有乙個整數,為最接近相應給定值的元素值,保持輸入順序。若有多個值滿足條件,輸出最小的乙個。
示例1

複製

5

2 4 5 5 732

56

複製

2

55

這是乙個二分的好題呀。二分是乙個很基礎的演算法,必須要懂且會用。

#includeusing namespace std;

const int n=1e5+10;

int a[n],n;

void find(int v)

if(v>=a[n])

while(l<=r)

if(a[m]>v) r=m-1;

else l=m+1;

} if(a[l]-v>n;

for(int i=1;i<=n;i++) scanf("%d",&a[i]);

sort(a+1,a+1+n);

int m;

cin>>m;

while(m--)

}

發財兔幾何 二分

題目描述 小明非常喜歡計算幾何,有一天他突發奇想,從x正半軸和y正半軸上分別選了n個點,他按照某種順序把兩邊的點一一對應連起來,構成了n個線段,其中要保證任意兩個線段是不相交的。後來小明又提出了q個問題,每個問題給出乙個點p x,y 我們想要知道op線段和多少小明連起來的那n個線段有交點。o為原點 ...

救救兔子(二分)

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 某天,乙隻可愛的小兔砸在路上蹦蹦跳跳地走著,怪人pm6出現了,於是小兔子被盯上了。pm6 免子。哦不,小兔子。你長得真好 不對,真可愛。我這裡有一道很容易很容易的題...

救救兔子(二分)

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 某天,乙隻可愛的小兔砸在路上蹦蹦跳跳地走著,怪人pm6出現了,於是小兔子被盯上了。pm6 免子。哦不,小兔子。你長得真好 不對,真可愛。我這裡有一道很容易很容易的題...