時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 262144k,其他語言524288k
64bit io format: %lld
某天,乙隻可愛的小兔砸在路上蹦蹦跳跳地走著,怪人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
52 4 5 5 732
56
2分析:本題主要考察二分查詢運用,我們可以先把元素進行排序,從元素中進行查詢,如果找到則返回其值即可,如果找不到相鄰最近的即可,注意有可能要查詢的元素小於排序好元素的第乙個,或者大於排序好元素的最後乙個。這個情況一定要考慮進去,不然一定會wa掉55
#include#includeusing namespace std;
const int m=1e5+5;
int a[m],n,m,num,i,j,k;
void binary_search(int number)//定義二分查詢函式
while(l<=r)//如果要查詢的元素在範圍之內,進行二分查詢
else if(numberelse
}if(a[l]-numberelse }
int main()
sort(a+1,a+n+1);
scanf("%d",&m);//輸入詢問次數
for(i=1;i<=m;i++)
}
牛客OI周賽7 普及組(A 救救貓咪)
某天,乙隻可愛的肥橘喵在路上走,突然遇到了乙個怪人,那怪人自稱pm6,小肥喵,這裡有一道水題,答對了我就請你吃狗肉,答錯了你就請我吃 喵咪瑟瑟發抖 qaq什麼題?pm6道 給你座標軸上的n個點,求出對於每個點,有多少個點的 x 座標和 y 座標都大於它。毫不意外,蠢肥喵完全不會這道題並面臨著被做成 ...
牛客OI周賽7 普及組 救救企鵝(暴力列舉)
時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 另一天,乙隻可愛的圍著圍巾的肥企鵝在路上搖搖晃晃地走著,遇上了迎面走來的打著飽嗝的pm6。小企鵝預感不妙,這不就是最近有名的惡人pm6麼!嚇得立刻扭頭就想跑。pm6...
牛客OI周賽7 普及組
比賽鏈結 這題非常簡單,純模擬就可以過,不用解釋 如下 includeusing namespace std struct gg a 10005 int main cin m for int i 1 i m i cout 這題目看起來仍然簡單。但最開始我還以為要把所有區間全部列舉一遍。然後我打出暴力...