2 条题解

  • 1
    @ 2023-12-25 20:36:32
    #include <iostream>
    
    using namespace std;
    const int N=1000010;
    int a[N];
    
    int main(){
    	std::ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	int n;
    	cin >> n;
    	for(int i=0;i<n;i++){
    		cin >> a[i]; 
    	} 
    	int q;
    	cin >> q;
    	while(q--){
    	int l=0,r=n-1,x;          //l为左范围 r为右范围
    	cin >> x;
    	while(l<r){
    		int mid=(l+r)/2;      //mid为中点
    		if(a[mid]>=x){        //x在mid左边(包含mid)
    			r=mid;            //让右端=mid
    		}
    		else{                 //x在mid右边(不包含mid)
    			l=mid+1;          //让左端等于mid+1
    		}
    	}
    	if(a[l]!=x){              //没找到
    		cout << "NO" << '\n';
    	}
    	else{
    		cout << "YES" << '\n';
    	}
    	}
    	
    	return 0;
    }
    
    • @ 2023-12-25 21:04:53

      用'\n'替换endl会快一些

  • 0
    @ 2024-10-16 16:47:23

    #include<stdio.h>

    int main(){ int n; scanf("%d",&n); int ai[n]; for(int i=0;i<n;i++){ scanf("%d",&ai[i]); } int m; scanf("%d",&m); while(m--){ int b; scanf("%d",&b); int l,r; l = 0; r = n-1; while(l<r){ int mid = (l+r)/2; if(ai[mid]>=b){ r = mid; }else{ l = mid+1; } } if(ai[l]!=b){ printf("NO\n"); }else{ printf("YES\n"); } } return 0; }

    • 1

    信息

    ID
    250
    时间
    100ms
    内存
    256MiB
    难度
    7
    标签
    (无)
    递交数
    743
    已通过
    153
    上传者