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-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-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;
            }
            • 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
              标签
              递交数
              280
              已通过
              99
              上传者