バイナリ検索テンプレートのタイトルとSTL

トピック出典:https://www.51nod.com/Challenge/Problem.html#problemId=2063

タイトル説明

整数nと、整数を入力します。nは、nは昇順にソートされた整数保証。
次にQクエリの整数q(Q <= 100000)代表に入ります。次Qの行は、各列は、クエリの代表的な整数mを、含んでいます。各クエリに対して、バイナリ検索を使用して、M nは整数で、前の入力に現れたか否かが判断されます。存在する場合、出力ライン「はい」、そうでない場合は「いいえ」。

エントリー

最初のライン:整数N(N <= 100000)。
次のn行は、各行の整数(1 <= <=愛愛 ^ 9 10)。
次の行、整数q。
次Q線それぞれは、整数Xを入力(1 <= X <= 10 ^ 9)。

輸出

Q行の文字列、各行動「はい」または「いいえ」。

サンプル入力

5 
1 
3 
4 
5 
7 
3 
4 
5 
0

サンプル出力

はい
はい
ません

// 方法一:手写bynary_seach
の#include <ビット/ STDC ++ H> 名前空間STDを使用して、 const int型max_n = 1E5 + 10。 整数nは、[max_n]、Q、X。 メイン()がINT { CINを>> N。 以下のために(INT I 0 =、I <N; I ++) CIN >> [I]。 cinを>> Q; 用(INT I = 0; I <Q、I ++){ CIN >> X。 INT低= 0、ハイ= N-1; ブールF = 0。 一方(低<=高){ int型ミッド=ハイ(高-低)/ 2。 IF([中間]> X)高=ミッド1。 IF([中間] <X)=低、中間+ 1。 IF([中間] == x)は{ F = 1。 ブレーク; } } COUT <<(F "はい" "いいえ"?)<< ENDL。 } 0を返します。

 

// 方法二:使用STL之bynary_seach() 
の#include <ビット/ STDC ++ H> 
名前空間STDを使用して、
const int型max_n = 1E5 + 10。
整数nは、[max_n]、Q、X。
メイン()がINT 
{ 
	CINを>> N。
	以下のために(INT I 0 =、I <N; I ++)
		CIN >> [I]。
	cinを>> Q; 
	用(INT I = 0; I <Q、I ++){ 
		CIN >> X。
		INT F = binary_search(+ nを、X)。
		coutの<<(?F "はい": "いいえ")<<てendl; 
	}	 
	0を返します。
}

 

STLバイナリ検索:

https://blog.csdn.net/zwj1452267376/article/details/47150521

バイナリbinary_searchで検索、LOWER_BOUND、UPPER_BOUND(手書き詳細):

https://blog.csdn.net/dl970220/article/details/80415798

C / C ++ - LOWER_BOUNDとUPPER_BOUND使用量のSTL:

https://blog.csdn.net/jadeyansir/article/details/77015626

おすすめ

転載: www.cnblogs.com/tflsnoi/p/12288065.html