2 条题解
-
1
#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; }
-
0
#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
- 上传者