P M 二分查詢

2021-07-29 18:38:11 字數 854 閱讀 2810

description

給出含有n個數的公升序序列,保證序列中的數兩兩不相等,這n個數編號從1 到n。

然後給出q次詢問,每次詢問給出乙個數x,若x存在於此序列中,則輸出其編號,否則輸出-1。

input

單組輸入。首先輸入乙個整數n(1 <= n && n <= 3000000),接下的一行包含n個數。

再接下來的一行包含乙個正整數q(1 <= q && q <= 10000),表示有q次詢問。

再接下來的q行,每行包含乙個正整數x。

output

對於每次詢問,輸出乙個整數代表答案。

sample input

5 1 3 5 7 9

3 1

5 8

sample output

1 3

-1直接用二分查詢的簡單實現,一直二分遞迴到找到key,然後返回m+1,剛開始用的cin,cout然後超時了,換scanf,printf就ac了

#include

using

namespace

std;

#define max 3000003

long

long a[max];

int key;

int found(long

long *a,int x,int y)

} int main()

int q=0;

cin>>q;

for(int j=0;jscanf("%d",&key);

printf("%d\n",found(a,0,n));

}return

0;}

P M 二分查詢

description 給出含有n個數的公升序序列,保證序列中的數兩兩不相等,這n個數編號從1 到n。然後給出q次詢問,每次詢問給出乙個數x,若x存在於此序列中,則輸出其編號,否則輸出 1。input 單組輸入。首先輸入乙個整數n 1 n n 3000000 接下的一行包含n個數。再接下來的一行包含...

遞推遞迴練習P M 二分查詢

題目簡要 description 給出含有n個數的公升序序列,保證序列中的數兩兩不相等,這n個數編號從1 到n。然後給出q次詢問,每次詢問給出乙個數x,若x存在於此序列中,則輸出其編號,否則輸出 1。input 單組輸入。首先輸入乙個整數n 1 n n 3000000 接下的一行包含n個數。再接下來...

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...