7 条题解

  • 4
    @ 2024-7-26 14:24:51
    #include<bits/stdc++.h>
    using namespace std; 
    const int maxn=1e6+10;
    int a[maxn],n,m,q;
    int find(int x){
    	int l=1,r=n;
    	while(l<r){
    		int mid=(l+r)/2;
    		if(a[mid]>=x) r=mid;
    		else l=mid+1;
    	}
    	if(a[l]==x) return l;
    	else return -1; 
    }
    int main(){
        scanf("%d%d",&n,&m); 
        for(int i=1;i<=n;i++) cin>>a[i];
        for(int i=1;i<=m;i++){
        	cin>>q;
        	int ans=find(q);
    		printf("%d ",ans);          
    	}
    	return 0;
    } 
    
  • 1
    @ 2024-7-27 11:01:17
    #include<bits/stdc++.h>
    using namespace std; 
    const int maxn=1e6+10;
    int a[maxn],n,m,q;
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++) cin>>a[i];
    	for(int i=1;i<=m;i++){
    		cin>>q;
    		int ans=lower_bound(a+1,a+n+1,q)-a;
    		if(q!=a[ans]) cout<<"-1"<<" ";
    		else cout<<ans<<" ";           
    	}
    	return 0;
    }
    第二种方法
    
    • 1
      @ 2024-7-27 11:00:51

      #include<bits/stdc++.h> using namespace std; const int maxn=1e6+10; int a[maxn],n,m,q; int main(){ cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=m;i++){ cin>>q; int ans=lower_bound(a+1,a+n+1,q)-a; if(a[ans]!=q) cout<<-1<<" "; else cout<<ans<<" "; } return 0; }

      • 1
        @ 2024-7-27 10:00:55
        
        ```#include<bits/stdc++.h>
        using namespace std; 
        const int maxn=1e6+10;
        int a[maxn],n,m,q;
        int find(int x){
        	int l=1,r=n;
        	while(l<r){
        		int mid=(l+r)/2;
        		if(a[mid]>=x) r=mid;
        		else l=mid+1;
        	}
        	if(a[l]==x) return l;
        	else return -1; 
        }
        int main(){
            scanf("%d%d",&n,&m); 
            for(int i=1;i<=n;i++) cin>>a[i];
            for(int i=1;i<=m;i++){
            	cin>>q;
            	int ans=find(q);
        		printf("%d ",ans);          
        	}
        	return 0;
        }
        • 1
          @ 2024-7-26 14:28:48
          #include<bits/stdc++.h>
          using namespace std;
          const int maxn=1e6+10;
          int a[maxn],n,m,q;
          
          int find(int x){
          	int l=1,r=n;
          	while(l<r){
          		int mid=(l+r)/2;
          		if(a[mid]>=x) r=mid;
          		else l=mid+1;
          	}
          	if(a[l]==x) return l;
          	else return -1;
          }
          
          int main(){
          	scanf("%d%d",&n,&m);
          	for(int i=1;i<=n;i++) cin>>a[i];
          	for(int i=1;i<=m;i++){
          		cin>>q;
          		int ans=find(q);
          		printf("%d ",ans);
          	}
          } 
          
          • 0
            @ 2024-7-27 10:57:52

            #include<bits/stdc++.h> using namespace std; const int maxn=1e6+10; int a[maxn],n,m,q; int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=m;i++){ cin>>q; int ans=lower_bound(a+1,a+n+1,q)-a; if(q!=a[ans]) { cout<<"-1"<<" "; }else{ cout<<ans<<" "; }

            }
            return 0;
            

            }

            • 0
              @ 2024-7-26 14:25:46

              #include<bits/stdc++.h> using namespace std; const int maxn=1e6+10; int a[maxn],n,m,q;

              int find(int x){ int l=1,r=n; while(l<r){ int mid=(l+r)/2; if(a[mid]>=x) r=mid; else l=mid+1; } if(a[l]==x)return l; else return -1; } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=m;i++){ cin>>q; int ans=find(q); printf("%d ",ans); } return 0; }

              • 1

              信息

              ID
              2044
              时间
              1000ms
              内存
              125MiB
              难度
              5
              标签
              递交数
              278
              已通过
              97
              上传者