首页 > 其他 > 详细

7.25 二分查找模板

时间:2019-07-25 12:35:45      阅读:67      评论:0      收藏:0      [点我收藏+]

  今天为大家整理一类经典题目——二分问题,这类问题在普及提高组竞赛中经常出现,而且经常作为难点出现,所以同学们要在刚开始接触的时候就要打好基础,熟练运用模板,在以后的竞赛中才能做到手到擒来。

题目描述

技术分享图片
技术分享图片技术分享图片

技术分享图片

 

 

 

技术分享图片

题解代码:

#include<iostream>
#include<string>
using namespace std;
int n,m;
//找出小于等于该值的最大值
long long a[100005],b[50005];
/*
bool binary_search(long long value){
 int l=0,r=n-1;
 while(l<r){
  int mid=(l+r+1)/2;
  if(a[mid]<=value){
   l=mid;
  }
  else{
   r=mid-1;
  }
 }
 if(a[l]==value)
 {
  return true;
 }
 return false;
}
*/
//找出大于等于的最小值
bool binary_search(long long value){
 int l=0,r=n-1;
 while(l<r){
  int mid=(l+r)/2;
  if(a[mid]>=value){
   r=mid;
  }
  else{
   l=mid+1;
  }
 }
 if(a[r]==value){
  return true;
 }
 return false;
}
int main(){
 scanf("%d",&n);
 for(int i=0;i<n;i++){
  scanf("%lld",&a[i]);
 }
 scanf("%d",&m);
 for(int i=0;i<m;i++){
  scanf("%lld",&b[i]);
 }
 int ans=0;
 for(int i=0;i<m;i++){
  bool flag=binary_search(b[i]);
  if(flag==true){
   ans++;
  }
 }
 printf("%d",ans);
 return 0;
}

 

7.25 二分查找模板

原文:https://www.cnblogs.com/cxs070998/p/11243396.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!